diff --git a/hgext/zeroconf/__init__.py b/hgext/zeroconf/__init__.py --- a/hgext/zeroconf/__init__.py +++ b/hgext/zeroconf/__init__.py @@ -112,7 +112,7 @@ class hgwebzc(hgweb_mod.hgweb): class hgwebdirzc(hgwebdir_mod.hgwebdir): def run(self): for r, p in self.repos: - u = ui.ui(parentui=self.parentui) + u = self.parentui.copy() u.readconfig(os.path.join(p, '.hg', 'hgrc')) n = os.path.basename(r) publish(n, "hgweb", p, int(u.config("web", "port", 8000))) diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2677,13 +2677,13 @@ def serve(ui, repo, **opts): s = sshserver.sshserver(ui, repo) s.serve_forever() - parentui = repo and repo.baseui or ui + baseui = repo and repo.baseui or ui optlist = ("name templates style address port prefix ipv6" " accesslog errorlog webdir_conf certificate") for o in optlist.split(): if opts[o]: - parentui.setconfig("web", o, str(opts[o])) - if (repo is not None) and (repo.ui != parentui): + baseui.setconfig("web", o, str(opts[o])) + if (repo is not None) and (repo.ui != baseui): repo.ui.setconfig("web", o, str(opts[o])) if repo is None and not ui.config("web", "webdir_conf"): @@ -2693,7 +2693,7 @@ def serve(ui, repo, **opts): class service: def init(self): util.set_signal_handler() - self.httpd = hgweb.server.create_server(parentui, repo) + self.httpd = hgweb.server.create_server(baseui, repo) if not ui.verbose: return diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -269,7 +269,7 @@ def _dispatch(ui, args): lui = ui if path: try: - lui = _ui.ui(parentui=ui) + lui = ui.copy() lui.readconfig(os.path.join(path, ".hg", "hgrc")) except IOError: pass @@ -278,7 +278,7 @@ def _dispatch(ui, args): rpath = _earlygetopt(["-R", "--repository", "--repo"], args) if rpath: path = lui.expandpath(rpath[-1]) - lui = _ui.ui(parentui=ui) + lui = ui.copy() lui.readconfig(os.path.join(path, ".hg", "hgrc")) extensions.loadall(lui) diff --git a/mercurial/hgweb/hgwebdir_mod.py b/mercurial/hgweb/hgwebdir_mod.py --- a/mercurial/hgweb/hgwebdir_mod.py +++ b/mercurial/hgweb/hgwebdir_mod.py @@ -203,7 +203,7 @@ class hgwebdir(object): continue name = name[len(subdir):] - u = ui.ui(parentui=self.parentui) + u = self.parentui.copy() try: u.readconfig(os.path.join(path, '.hg', 'hgrc')) except Exception, e: diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -13,7 +13,7 @@ import config, traceback, util, error '0':False, 'no':False, 'false':False, 'off':False} class ui(object): - def __init__(self, parentui=None): + def __init__(self, src=None): self.buffers = [] self.quiet = self.verbose = self.debugflag = self.traceback = False self.interactive = self.report_untrusted = True @@ -23,12 +23,12 @@ class ui(object): self.trusted_users = {} self.trusted_groups = {} - if parentui: - self.cdata = parentui.cdata.copy() - self.ucdata = parentui.ucdata.copy() - self.overlay = parentui.overlay.copy() - self.trusted_users = parentui.trusted_users.copy() - self.trusted_groups = parentui.trusted_groups.copy() + if src: + self.cdata = src.cdata.copy() + self.ucdata = src.ucdata.copy() + self.overlay = src.overlay.copy() + self.trusted_users = src.trusted_users.copy() + self.trusted_groups = src.trusted_groups.copy() self.fixconfig() else: # we always trust global config files diff --git a/tests/test-trusted.py b/tests/test-trusted.py --- a/tests/test-trusted.py +++ b/tests/test-trusted.py @@ -59,9 +59,8 @@ def testui(user='foo', group='bar', tuse print '# %s user, %s group%s' % (kind[user == cuser], kind[group == cgroup], trusted) - parentui = ui.ui() - parentui.setconfig('ui', 'debug', str(bool(debug))) - u = ui.ui(parentui=parentui) + u = ui.ui() + u.setconfig('ui', 'debug', str(bool(debug))) u.readconfig('.hg/hgrc') if silent: return u @@ -146,7 +145,7 @@ print "# read trusted, untrusted, new ui u = ui.ui() u.setconfig('ui', 'debug', 'on') u.readconfig(filename) -u2 = ui.ui(parentui=u) +u2 = u.copy() def username(uid=None): return 'foo' util.username = username