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!
--- 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