subrepo: isolate configuration between each repositories in subrepo tree stable
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 29 Sep 2012 20:11:24 +0900
branchstable
changeset 17873 573bec4ab7ba
parent 17872 7d4e98bf114d
child 17874 2ba70eec1cf0
subrepo: isolate configuration between each repositories in subrepo tree Before this patch, repository local configurations are not isolated between repositories in subrepo tree, because "localrepository" objects for each subrepositories are created with "ui" instance of the parent of each ones. So, local configuration of the parent or higher repositories are visible also in children or lower ones. This patch uses "baseui" instead of "ui" to create repository object: the former contains only global configuration. This patch also copies 'ui.commitsubrepos' configuration to commit recursively in subrepo tree, because it may be set in not "repo.baseui" but "repo.ui".
mercurial/subrepo.py
--- a/mercurial/subrepo.py	Sat Oct 27 16:39:47 2012 -0500
+++ b/mercurial/subrepo.py	Sat Sep 29 20:11:24 2012 +0900
@@ -395,7 +395,11 @@
         if not os.path.exists(os.path.join(root, '.hg')):
             create = True
             util.makedirs(root)
-        self._repo = hg.repository(r.ui, root, create=create)
+        self._repo = hg.repository(r.baseui, root, create=create)
+        for s, k in [('ui', 'commitsubrepos')]:
+            v = r.ui.config(s, k)
+            if v:
+                self._repo.ui.setconfig(s, k, v)
         self._initrepo(r, state[0], create)
 
     def _initrepo(self, parentrepo, source, create):