From e9263e458055ab361a7292adc800d3e62b47b39f Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Tue, 18 Dec 2012 01:28:48 +0100 Subject: 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 Signed-off-by: Junio C Hamano --- perl/Git/SVN/Prompt.pm | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'perl/Git') 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( || '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 = ); + $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; } -- cgit v1.2.3