ui: support paths.default-push without paths.default set (issue4914) stable
authorGregory Szorc <gregory.szorc@gmail.com>
Thu, 22 Oct 2015 18:59:03 +0000
branchstable
changeset 26820 71d5238f92e9
parent 26819 ba7eeeac9603
child 26821 27683c63f44c
ui: support paths.default-push without paths.default set (issue4914) This behavior regressed as part of the paths API refactoring. Previous behavior was to accept "default-push" without "default" defined. Current behavior aborts with "default repository not configured!." This patch restores the old behavior and adds test coverage for the scenario, which was absent before.
mercurial/ui.py
tests/test-default-push.t
--- a/mercurial/ui.py	Wed Oct 21 16:21:27 2015 -0500
+++ b/mercurial/ui.py	Thu Oct 22 18:59:03 2015 +0000
@@ -1026,7 +1026,11 @@
         # Handle default-push, which is a one-off that defines the push URL for
         # the "default" path.
         defaultpush = ui.config('paths', 'default-push')
-        if defaultpush and 'default' in self:
+        if defaultpush:
+            # "default-push" can be defined without "default" entry. This is a
+            # bit weird, but is allowed for backwards compatibility.
+            if 'default' not in self:
+                self['default'] = path('default', rawloc=defaultpush)
             self['default']._pushloc = defaultpush
 
     def getpath(self, name, default=None):
--- a/tests/test-default-push.t	Wed Oct 21 16:21:27 2015 -0500
+++ b/tests/test-default-push.t	Thu Oct 22 18:59:03 2015 +0000
@@ -46,6 +46,24 @@
   adding file changes
   added 1 changesets with 1 changes to 1 files
 
+Push should push to 'default-push' when 'default' is not set
+
+  $ hg -q clone a push-default-only
+  $ cd push-default-only
+  $ rm .hg/hgrc
+
+  $ touch foo
+  $ hg -q commit -A -m 'add foo'
+  $ hg --config paths.default-push=../a push
+  pushing to $TESTTMP/a (glob)
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+
+  $ cd ..
+
 Pushing to a path that isn't defined should not fall back to default
 
   $ hg --cwd b push doesnotexist