changeset 26820:71d5238f92e9 stable

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.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 22 Oct 2015 18:59:03 +0000
parents ba7eeeac9603
children 27683c63f44c
files mercurial/ui.py tests/test-default-push.t
diffstat 2 files changed, 23 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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