diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -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')) other = hg.peer(repo, opts, dest) if 'bookmarks' not in other.listkeys('namespaces'): @@ -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) finally: diff --git a/tests/test-ssh.t b/tests/test-ssh.t --- a/tests/test-ssh.t +++ b/tests/test-ssh.t @@ -230,7 +230,7 @@ test pushkeys and bookmarks namespaces phases $ hg book foo -r 0 - $ hg out -B + $ hg out -B --config paths.default=bogus://invalid --config paths.default:pushurl=`hg paths default` comparing with ssh://user@dummy/remote searching for changed bookmarks foo 1160648e36ce diff --git a/tests/test-subrepo-relative-path.t b/tests/test-subrepo-relative-path.t --- a/tests/test-subrepo-relative-path.t +++ b/tests/test-subrepo-relative-path.t @@ -56,6 +56,30 @@ Clone main from hgweb new changesets 863c1745b441 3 files updated, 0 files merged, 0 files removed, 0 files unresolved +Ensure that subrepos pay attention to default:pushurl + + $ cat > cloned/.hg/hgrc << EOF + > [paths] + > default:pushurl = http://localhost:$HGPORT/main + > EOF + + $ hg -R cloned out -S --config paths.default=bogus://invalid + comparing with http://localhost:$HGPORT/main + searching for changes + no changes found + comparing with http://localhost:$HGPORT/sub + searching for changes + no changes found + [1] + + $ hg -R cloned push --config paths.default=bogus://invalid + pushing to http://localhost:$HGPORT/main + no changes made to subrepo sub since last push to http://localhost:$HGPORT/sub + searching for changes + no changes found + abort: HTTP Error 403: ssl required + [255] + Checking cloned repo ids $ hg id -R cloned