Submitter | Gregory Szorc |
---|---|
Date | Oct. 22, 2015, 7:02 p.m. |
Message ID | <0d4034dd4b2993c35136.1445540563@gps-mbp.local> |
Download | mbox | patch |
Permalink | /patch/11217/ |
State | Accepted |
Headers | show |
Comments
Queued for stable, thanks. > On Oct 22, 2015, at 20:02, Gregory Szorc <gregory.szorc@gmail.com> wrote: > > # HG changeset patch > # User Gregory Szorc <gregory.szorc@gmail.com> > # Date 1445540343 0 > # Thu Oct 22 18:59:03 2015 +0000 > # Branch stable > # Node ID 0d4034dd4b2993c351361519f4c6ed51b5c62834 > # Parent c7d30fdb13b229537269030c94c7b2540b6d34a0 > 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 --git a/mercurial/ui.py b/mercurial/ui.py > --- a/mercurial/ui.py > +++ b/mercurial/ui.py > @@ -1025,9 +1025,13 @@ class paths(dict): > > # 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): > """Return a ``path`` from a string, falling back to a default. > diff --git a/tests/test-default-push.t b/tests/test-default-push.t > --- a/tests/test-default-push.t > +++ b/tests/test-default-push.t > @@ -45,8 +45,26 @@ Push should push to 'default-push' when > adding manifests > 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 > abort: repository doesnotexist does not exist! > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@selenic.com > https://selenic.com/mailman/listinfo/mercurial-devel
Patch
diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -1025,9 +1025,13 @@ class paths(dict): # 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): """Return a ``path`` from a string, falling back to a default. diff --git a/tests/test-default-push.t b/tests/test-default-push.t --- a/tests/test-default-push.t +++ b/tests/test-default-push.t @@ -45,8 +45,26 @@ Push should push to 'default-push' when adding manifests 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 abort: repository doesnotexist does not exist!