# HG changeset patch # User Matt Mackall # Date 2009-04-26 21:50:43 # Node ID d2899a856f9f4cc0ee161d5b266fe10401face42 # Parent f3abe032fc8982082cbd9f00bd9bcc0109a10138 ui: replace parentui mechanism with repo.baseui diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -100,10 +100,10 @@ def loglimit(opts): def remoteui(src, opts): 'build a remote ui from ui or repo and opts' - if hasattr(src, 'ui'): # looks like a repository - dst = src.ui.parentui # drop repo-specific config + if hasattr(src, 'baseui'): # looks like a repository + dst = src.baseui # drop repo-specific config src = src.ui # copy target options from repo - else: # assume it's a ui object + else: # assume it's a global ui object dst = src # keep all global options # copy ssh-specific options diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2677,7 +2677,7 @@ def serve(ui, repo, **opts): s = sshserver.sshserver(ui, repo) s.serve_forever() - parentui = ui.parentui or ui + parentui = repo and repo.baseui or ui optlist = ("name templates style address port prefix ipv6" " accesslog errorlog webdir_conf certificate") for o in optlist.split(): diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -20,7 +20,7 @@ class localrepository(repo.repository): capabilities = set(('lookup', 'changegroupsubset')) supported = ('revlogv1', 'store', 'fncache') - def __init__(self, parentui, path=None, create=0): + def __init__(self, baseui, path=None, create=0): repo.repository.__init__(self) self.root = os.path.realpath(path) self.path = os.path.join(self.root, ".hg") @@ -34,10 +34,10 @@ class localrepository(repo.repository): os.mkdir(path) os.mkdir(self.path) requirements = ["revlogv1"] - if parentui.configbool('format', 'usestore', True): + if baseui.configbool('format', 'usestore', True): os.mkdir(os.path.join(self.path, "store")) requirements.append("store") - if parentui.configbool('format', 'usefncache', True): + if baseui.configbool('format', 'usefncache', True): requirements.append("fncache") # create an invalid changelog self.opener("00changelog.i", "a").write( @@ -70,7 +70,8 @@ class localrepository(repo.repository): self.sjoin = self.store.join self.opener.createmode = self.store.createmode - self.ui = ui.ui(parentui=parentui) + self.baseui = baseui + self.ui = baseui.copy() try: self.ui.readconfig(self.join("hgrc"), self.root) extensions.loadall(self.ui) diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -20,23 +20,22 @@ class ui(object): self.overlay = config.config() self.cdata = config.config() self.ucdata = config.config() - self.parentui = None self.trusted_users = {} self.trusted_groups = {} if parentui: - self.parentui = parentui.parentui or parentui - self.cdata = self.parentui.cdata.copy() - self.ucdata = self.parentui.ucdata.copy() + 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() - self.buffers = parentui.buffers self.fixconfig() else: # we always trust global config files for f in util.rcpath(): self.readconfig(f, assumetrusted=True) + def copy(self): + return ui(self) _isatty = None def isatty(self): diff --git a/tests/test-extension b/tests/test-extension --- a/tests/test-extension +++ b/tests/test-extension @@ -9,8 +9,6 @@ from mercurial import commands def uisetup(ui): ui.write("uisetup called\\n") - ui.write("ui.parentui is%s None\\n" % (ui.parentui is not None - and "not" or "")) def reposetup(ui, repo): ui.write("reposetup called for %s\\n" % os.path.basename(repo.root)) diff --git a/tests/test-extension.out b/tests/test-extension.out --- a/tests/test-extension.out +++ b/tests/test-extension.out @@ -1,10 +1,8 @@ uisetup called -ui.parentui isnot None reposetup called for a ui == repo.ui Foo uisetup called -ui.parentui is None reposetup called for a ui == repo.ui reposetup called for b @@ -12,11 +10,9 @@ ui == repo.ui updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved uisetup called -ui.parentui is None Bar % module/__init__.py-style uisetup called -ui.parentui isnot None reposetup called for a ui == repo.ui Foo