Mercurial > hg
changeset 20291:7d589d923b8a
url: added authuri when login information is requested (issue3209)
When users are using a revset they can get multiple password prompts.
This prompts have no extra information about which password is being requested
so I added the authuri to the prompt to make it recognizable.
As in:
$ hg log -r "outgoing('https://bitbucket.org/mg/test') -
outgoing('https://bitbucket.org/nesneros/test')"
http authorization required
realm: Bitbucket.org HTTP
user: interrupted!
I changed it to describe the url when prompting for password.
As in:
$ hg log -r "outgoing('https://bitbucket.org/mg/test') -
outgoing('https://bitbucket.org/nesneros/test')"
http authorization required for https://bitbucket.org/mg/test
realm: Bitbucket.org HTTP
user: interrupted!
author | Lucas Moscovicz <lmoscovicz@fb.com> |
---|---|
date | Wed, 15 Jan 2014 16:46:20 -0800 |
parents | 50db996bccaf |
children | 8dc254198a8f |
files | mercurial/url.py tests/test-http.t |
diffstat | 2 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/url.py Fri Jan 17 23:55:11 2014 +0900 +++ b/mercurial/url.py Wed Jan 15 16:46:20 2014 -0800 @@ -32,10 +32,14 @@ user, passwd = auth.get('username'), auth.get('password') self.ui.debug("using auth.%s.* for authentication\n" % group) if not user or not passwd: + u = util.url(authuri) + u.query = None if not self.ui.interactive(): - raise util.Abort(_('http authorization required')) + raise util.Abort(_('http authorization required for %s') % + util.hidepassword(str(u))) - self.ui.write(_("http authorization required\n")) + self.ui.write(_("http authorization required for %s\n") % + util.hidepassword(str(u))) self.ui.write(_("realm: %s\n") % realm) if user: self.ui.write(_("user: %s\n") % user)
--- a/tests/test-http.t Fri Jan 17 23:55:11 2014 +0900 +++ b/tests/test-http.t Wed Jan 15 16:46:20 2014 -0800 @@ -156,12 +156,24 @@ > --config server.preferuncompressed=True $ cat pid >> $DAEMON_PIDS + $ cat << EOF > get_pass.py + > import getpass + > def newgetpass(arg): + > return "pass" + > getpass.getpass = newgetpass + > EOF + $ hg id http://localhost:$HGPORT2/ - abort: http authorization required + abort: http authorization required for http://localhost:$HGPORT2/ [255] - $ hg id http://user@localhost:$HGPORT2/ - abort: http authorization required + $ hg id http://localhost:$HGPORT2/ + abort: http authorization required for http://localhost:$HGPORT2/ [255] + $ hg id --config ui.interactive=true --config extensions.getpass=get_pass.py http://user@localhost:$HGPORT2/ + http authorization required for http://localhost:$HGPORT2/ + realm: mercurial + user: user + password: 5fed3813f7f5 $ hg id http://user:pass@localhost:$HGPORT2/ 5fed3813f7f5 $ echo '[auth]' >> .hg/hgrc @@ -183,7 +195,7 @@ 5 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg id http://user2@localhost:$HGPORT2/ - abort: http authorization required + abort: http authorization required for http://localhost:$HGPORT2/ [255] $ hg id http://user:pass2@localhost:$HGPORT2/ abort: HTTP Error 403: no