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.
--- 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