diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -3039,9 +3039,9 @@ def push(ui, repo, dest=None, **opts): dest = ui.expandpath(dest or 'default-push', dest or 'default') dest, branches = hg.parseurl(dest, opts.get('branch')) + ui.status(_('pushing to %s\n') % url.hidepassword(dest)) revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev')) other = hg.repository(hg.remoteui(repo, opts), dest) - ui.status(_('pushing to %s\n') % url.hidepassword(dest)) if revs: revs = [repo.lookup(rev) for rev in revs] diff --git a/mercurial/hg.py b/mercurial/hg.py --- a/mercurial/hg.py +++ b/mercurial/hg.py @@ -487,12 +487,12 @@ def incoming(ui, repo, source, opts): def _outgoing(ui, repo, dest, opts): dest = ui.expandpath(dest or 'default-push', dest or 'default') dest, branches = parseurl(dest, opts.get('branch')) + ui.status(_('comparing with %s\n') % url.hidepassword(dest)) revs, checkout = addbranchrevs(repo, repo, branches, opts.get('rev')) if revs: revs = [repo.lookup(rev) for rev in revs] other = repository(remoteui(repo, opts), dest) - ui.status(_('comparing with %s\n') % url.hidepassword(dest)) o = discovery.findoutgoing(repo, other, force=opts.get('force')) if not o: ui.status(_("no changes found\n")) diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -764,6 +764,11 @@ class gitsubrepo(abstractsubrepo): return tracking def _abssource(self, source): + if '://' not in source: + # recognize the scp syntax as an absolute source + colon = source.find(':') + if colon != -1 and '/' not in source[:colon]: + return source self._subsource = source return _abssource(self) diff --git a/tests/test-ssh.t b/tests/test-ssh.t --- a/tests/test-ssh.t +++ b/tests/test-ssh.t @@ -282,6 +282,7 @@ clone bookmarks passwords in ssh urls are not supported $ hg push ssh://user:erroneouspwd@dummy/remote + pushing to ssh://user:***@dummy/remote abort: password in URL not supported! [255]