diff options
author | Sven Strickroth <sven.strickroth@tu-clausthal.de> | 2012-12-18 01:28:48 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-12-17 17:21:26 -0800 |
commit | e9263e458055ab361a7292adc800d3e62b47b39f (patch) | |
tree | 4837e2357d01eb990c34d87c3c7b20d5d34ea61f /perl/Git | |
parent | perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set (diff) | |
download | tgif-e9263e458055ab361a7292adc800d3e62b47b39f.tar.xz |
git-svn, perl/Git.pm: extend and use Git->prompt method for querying users
git-svn reads usernames and other user queries from an interactive
terminal. This cause GUIs (w/o STDIN connected) to hang waiting forever
for git-svn to complete (http://code.google.com/p/tortoisegit/issues/detail?id=967).
This change extends the Git::prompt helper, so that it can also be used
for non password queries, and makes use of it instead of using
hand-rolled prompt-response code that only works with the interactive
terminal.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'perl/Git')
-rw-r--r-- | perl/Git/SVN/Prompt.pm | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/perl/Git/SVN/Prompt.pm b/perl/Git/SVN/Prompt.pm index a2cbcc8a58..74daa7a597 100644 --- a/perl/Git/SVN/Prompt.pm +++ b/perl/Git/SVN/Prompt.pm @@ -62,16 +62,16 @@ sub ssl_server_trust { issuer_dname fingerprint); my $choice; prompt: - print STDERR $may_save ? + my $options = $may_save ? "(R)eject, accept (t)emporarily or accept (p)ermanently? " : "(R)eject or accept (t)emporarily? "; STDERR->flush; - $choice = lc(substr(<STDIN> || 'R', 0, 1)); - if ($choice =~ /^t$/i) { + $choice = lc(substr(Git::prompt("Certificate problem.\n" . $options) || 'R', 0, 1)); + if ($choice eq 't') { $cred->may_save(undef); - } elsif ($choice =~ /^r$/i) { + } elsif ($choice eq 'r') { return -1; - } elsif ($may_save && $choice =~ /^p$/i) { + } elsif ($may_save && $choice eq 'p') { $cred->may_save($may_save); } else { goto prompt; @@ -109,9 +109,7 @@ sub username { if (defined $_username) { $username = $_username; } else { - print STDERR "Username: "; - STDERR->flush; - chomp($username = <STDIN>); + $username = Git::prompt("Username: "); } $cred->username($username); $cred->may_save($may_save); @@ -120,7 +118,7 @@ sub username { sub _read_password { my ($prompt, $realm) = @_; - my $password = Git::prompt($prompt); + my $password = Git::prompt($prompt, 1); $password; } |