diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -5720,12 +5720,9 @@ # this lets simultaneous -r, -b options continue working opts.setdefault(b'rev', []).append(b"null") - if not dests: - dests = [None] some_pushed = False result = 0 - for dest in dests: - path = ui.getpath(dest, default=(b'default-push', b'default')) + for path in urlutil.get_push_paths(repo, ui, dests): if not path: raise error.ConfigError( _(b'default repository not configured!'), diff --git a/mercurial/utils/urlutil.py b/mercurial/utils/urlutil.py --- a/mercurial/utils/urlutil.py +++ b/mercurial/utils/urlutil.py @@ -445,6 +445,14 @@ return bytes(u) +def get_push_paths(repo, ui, dests): + """yields all the `path` selected as push destination by `dests`""" + if not dests: + dests = [None] + for dest in dests: + yield ui.getpath(dest, default=(b'default-push', b'default')) + + def parseurl(path, branches=None): '''parse url#branch, returning (url, (branch, branches))''' u = url(path)