mq: don't inherit default and default-push paths with --mq (issue2333) stable
authorMads Kiilerich <mads@kiilerich.com>
Wed, 18 Aug 2010 02:43:45 +0200
branchstable
changeset 11965 77f1f206e135
parent 11960 df95b31bbdd7
child 11970 fca15617721c
child 11986 d2796a3cb816
child 12213 218bd2a056f5
mq: don't inherit default and default-push paths with --mq (issue2333) Configuration from the outer repo is inherited to the patches repo when --mq is used. In case the patches repo only has paths.default configured but the outer repo has paths.default-push then the inherited default-push will win. Very confusing. Inheriting the default paths is however wrong in all sane cases, so now we explicitly remove them.
hgext/mq.py
mercurial/ui.py
--- a/hgext/mq.py	Thu Aug 19 10:59:37 2010 +0200
+++ b/hgext/mq.py	Wed Aug 18 02:43:45 2010 +0200
@@ -1487,8 +1487,11 @@
             return True
 
     def qrepo(self, create=False):
+        ui = self.ui.copy()
+        ui.setconfig('paths', 'default', '', overlay=False)
+        ui.setconfig('paths', 'default-push', '', overlay=False)
         if create or os.path.isdir(self.join(".hg")):
-            return hg.repository(self.ui, path=self.path, create=create)
+            return hg.repository(ui, path=self.path, create=create)
 
     def restore(self, repo, rev, delete=None, qupdate=None):
         desc = repo[rev].description().strip()
--- a/mercurial/ui.py	Thu Aug 19 10:59:37 2010 +0200
+++ b/mercurial/ui.py	Wed Aug 18 02:43:45 2010 +0200
@@ -121,9 +121,11 @@
         self._trustusers.update(self.configlist('trusted', 'users'))
         self._trustgroups.update(self.configlist('trusted', 'groups'))
 
-    def setconfig(self, section, name, value):
-        for cfg in (self._ocfg, self._tcfg, self._ucfg):
-            cfg.set(section, name, value)
+    def setconfig(self, section, name, value, overlay=True):
+        if overlay:
+            self._ocfg.set(section, name, value)
+        self._tcfg.set(section, name, value)
+        self._ucfg.set(section, name, value)
         self.fixconfig()
 
     def _data(self, untrusted):