# HG changeset patch # User Gregory Szorc # Date 1445540343 0 # Node ID 71d5238f92e9ab5cc6b1677d4ba48903fc939f01 # Parent ba7eeeac9603077c6759235078297e63ae92078b 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. diff -r ba7eeeac9603 -r 71d5238f92e9 mercurial/ui.py --- 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): diff -r ba7eeeac9603 -r 71d5238f92e9 tests/test-default-push.t --- 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