[PATCH] outgoing: pay attention to `default:pushurl` for bookmarks and subrepos

Yuya Nishihara yuya at tcha.org
Tue May 29 07:35:42 EDT 2018


On Tue, 29 May 2018 00:42:23 -0400, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1527485794 14400
> #      Mon May 28 01:36:34 2018 -0400
> # Node ID 8544cdf89153aa7c0ce5be9c4dfdc052b2bf5d60
> # Parent  cc9aa88792fe8daf041521710f52be59c69b79eb
> outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
> 
> The problem here was that `default:pushurl` and `default` get translated to a
> single entry in `ui.paths` named 'default', with an attribute for 'pushloc',
> 'loc', and 'rawloc'.  ui.expandpath() then always takes the `rawloc` attribute.
> Maybe the ui.expandpath() API is busted and should be removed?  Or maybe
> getpath() should return a copy that adds an attribute reflecting the URL of the
> path chosen?

IIRC, ui.expandpath() is supposed to be superseded by ui.paths API.

> I thought that I could remove the code in hg._outgoing() and pass the location
> resolved in commands.py as `dest`, but unfortunately that code is needed there
> to resolve #branch type URLs.  Maybe that should be pulled up to commands.py,
> because I can't see any reasonable behavior for a subrepo path that's
> constructed out of that type of URL.
> 
> The push command already resolves this early, so that works properly.  But it
> looks like bundle, histedit, largefiles, patchbomb, and summary use a similar
> pattern, so they are likely similarly affected.

> @@ -3711,6 +3711,13 @@ def outgoing(ui, repo, dest=None, **opts
>  
>      Returns 0 if there are outgoing changes, 1 otherwise.
>      """
> +    # hg._outgoing() needs to re-resolve the path in order to handle #branch
> +    # style URLs, so don't overwrite dest.
> +    path = ui.paths.getpath(dest, default=('default-push', 'default'))
> +    if not path:
> +        raise error.Abort(_('default repository not configured!'),
> +                         hint=_("see 'hg help config.paths'"))
> +
>      opts = pycompat.byteskwargs(opts)
>      if opts.get('graph'):
>          logcmdutil.checkunsupportedgraphflags([], opts)
> @@ -3728,7 +3735,7 @@ def outgoing(ui, repo, dest=None, **opts
>          return 0
>  
>      if opts.get('bookmarks'):
> -        dest = ui.expandpath(dest or 'default-push', dest or 'default')
> +        dest = path.pushloc or path.loc
>          dest, branches = hg.parseurl(dest, opts.get('branch'))

It isn't your fault, but maybe we shouldn't overwrite 'dest' here?

> @@ -3738,7 +3745,7 @@ def outgoing(ui, repo, dest=None, **opts
>          ui.pager('outgoing')
>          return bookmarks.outgoing(ui, repo, other)
>  
> -    repo._subtoppath = ui.expandpath(dest or 'default-push', dest or 'default')
> +    repo._subtoppath = path.pushloc or path.loc
>      try:
>          return hg.outgoing(ui, repo, dest, opts)


More information about the Mercurial-devel mailing list