[PATCH STABLE] push: restore old behavior of default-push (issue5000)

Gregory Szorc gregory.szorc at gmail.com
Sat Dec 26 11:32:18 CST 2015



> On Dec 26, 2015, at 05:02, Yuya Nishihara <yuya at tcha.org> wrote:
> 
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1451110696 -32400
> #      Sat Dec 26 15:18:16 2015 +0900
> # Branch stable
> # Node ID 11ec0887bf0e7b1cdc13996fab9cbd1fae0b5c52
> # Parent  707cdf2c370093601865bc4a489fbc3e1b167aa0
> push: restore old behavior of default-push (issue5000)

This patch LGTM for stable.

> 
> This effectively backs out dceaef70e410 and 10917b062adf.
> 
> We can't handle "default-push" just like "default:pushurl" because it is a
> stand-alone named path. Instead, I have two ideas to work around the issue:
> 
> a. two defaults: getpath(dest, default=('default-push', 'default'))
> b. virtual path: getpath(dest, default=':default')
> 
> (a) is conservative approach and will have less trouble, but callers have
> to specify they need "default-push" or "default". (b) generates hidden
> ":default" path from "default" and "default-push", and callers request
> ":default". This will require some tricks and won't work if there are
> conflicting sub-options valid for both "pull" and "push".
> 
> I'll take (a) for default branch. This patch should NOT BE MERGED to default
> except for tests because it would break handling of "pushurl" sub-option.
> 
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -5394,11 +5394,13 @@ def push(ui, repo, dest=None, **opts):
>                 # this lets simultaneous -r, -b options continue working
>                 opts.setdefault('rev', []).append("null")
> 
> -    path = ui.paths.getpath(dest, default='default')
> +    path = ui.paths.getpath(dest, default='default-push')
> +    if not path:
> +        path = ui.paths.getpath(dest, default='default')
>     if not path:
>         raise error.Abort(_('default repository not configured!'),
>                          hint=_('see the "path" section in "hg help config"'))
> -    dest, branches = path.pushloc, (path.branch, opts.get('branch') or [])
> +    dest, branches = path.loc, (path.branch, opts.get('branch') or [])
>     ui.status(_('pushing to %s\n') % util.hidepassword(dest))
>     revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev'))
>     other = hg.peer(repo, opts, dest)
> 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
> @@ -46,6 +46,14 @@ Push should push to 'default-push' when 
>   adding file changes
>   added 1 changesets with 1 changes to 1 files
> 
> +But push should push to 'default' if explicitly specified (issue5000):
> +
> +  $ hg --cwd b push default
> +  pushing to $TESTTMP/a (glob)
> +  searching for changes
> +  no changes found
> +  [1]
> +
> Push should push to 'default-push' when 'default' is not set
> 
>   $ hg -q clone a push-default-only
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list