Submitter | Jun Wu |
---|---|
Date | Feb. 26, 2016, 3:36 p.m. |
Message ID | <ac5273f401959e4b5845.1456500984@x1c> |
Download | mbox | patch |
Permalink | /patch/13417/ |
State | Accepted |
Delegated to: | Yuya Nishihara |
Headers | show |
Comments
On Fri, 26 Feb 2016 15:36:24 +0000, Jun Wu wrote: > # HG changeset patch > # User Jun Wu <quark@fb.com> > # Date 1456500166 0 > # Fri Feb 26 15:22:46 2016 +0000 > # Node ID ac5273f401959e4b584591363f1700ef7df56fe8 > # Parent 93c4a18979328bf50acb2132c031d96fdda46bfc > chgserver: make _renewui load repo and command line configs Queued 1, 4 and 5, thanks. 3 looks good but it depends on 2. > +def _renewui(srcui, args=None): > + if not args: > + args = [] > + > newui = srcui.__class__() > for a in ['fin', 'fout', 'ferr', 'environ']: > setattr(newui, a, getattr(srcui, a)) > if util.safehasattr(srcui, '_csystem'): > newui._csystem = srcui._csystem > + > + # load wd and repo config, copied from dispatch.py > + cwds = dispatch._earlygetopt(['--cwd'], args) > + cwd = cwds and os.path.realpath(cwds[-1]) or None > + rpath = dispatch._earlygetopt(["-R", "--repository", "--repo"], args) > + path, newui = dispatch._getlocal(newui, rpath, wd=cwd) > + > + # internal config: extensions.chgserver > + # copy it. it can only be overrided from command line. > + newui.setconfig('extensions', 'chgserver', > + srcui.config('extensions', 'chgserver'), '--config') > + > + # command line args > + dispatch._parseconfig(newui, dispatch._earlygetopt(['--config'], args)) > + > # stolen from tortoisehg.util.copydynamicconfig() > for section, name, value in srcui.walkconfig(): > source = srcui.configsource(section, name) > - if ':' in source: > - # path:line > + if ':' in source or source == '--config': > + # path:line or command line '--config' would be lost if _renewui() is called without args, but I expect the current use of _renewui() will be superseded by the config hash. So that's okay.
Patch
diff --git a/hgext/chgserver.py b/hgext/chgserver.py --- a/hgext/chgserver.py +++ b/hgext/chgserver.py @@ -238,17 +238,35 @@ return chgui(srcui) -def _renewui(srcui): +def _renewui(srcui, args=None): + if not args: + args = [] + newui = srcui.__class__() for a in ['fin', 'fout', 'ferr', 'environ']: setattr(newui, a, getattr(srcui, a)) if util.safehasattr(srcui, '_csystem'): newui._csystem = srcui._csystem + + # load wd and repo config, copied from dispatch.py + cwds = dispatch._earlygetopt(['--cwd'], args) + cwd = cwds and os.path.realpath(cwds[-1]) or None + rpath = dispatch._earlygetopt(["-R", "--repository", "--repo"], args) + path, newui = dispatch._getlocal(newui, rpath, wd=cwd) + + # internal config: extensions.chgserver + # copy it. it can only be overrided from command line. + newui.setconfig('extensions', 'chgserver', + srcui.config('extensions', 'chgserver'), '--config') + + # command line args + dispatch._parseconfig(newui, dispatch._earlygetopt(['--config'], args)) + # stolen from tortoisehg.util.copydynamicconfig() for section, name, value in srcui.walkconfig(): source = srcui.configsource(section, name) - if ':' in source: - # path:line + if ':' in source or source == '--config': + # path:line or command line continue if source == 'none': # ui.configsource returns 'none' by default