diff options
author | Sven Strickroth <sven.strickroth@tu-clausthal.de> | 2012-12-18 01:28:45 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-12-17 17:21:22 -0800 |
commit | 38ecf3a35d4255368a24ca255daf0b1ea433f1e3 (patch) | |
tree | d029387c4cd318c17a947fcf4b52f93ae7563ff7 /perl/Git | |
parent | bdd478d620034dc6517aea940f5dc6b88f780c04 (diff) | |
download | git-38ecf3a35d4255368a24ca255daf0b1ea433f1e3.tar.gz |
git-svn, perl/Git.pm: add central method for prompting passwords
git-svn reads passwords from an interactive terminal or by using
GIT_ASKPASS helper tool. 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).
Commit 56a853b62c0ae7ebaad0a7a0a704f5ef561eb795 also tried to solve
this issue, but was incomplete as described above.
Instead of using hand-rolled prompt-response code that only works with the
interactive terminal, a reusable prompt() method is introduced in this commit.
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 | 20 |
1 files changed, 1 insertions, 19 deletions
diff --git a/perl/Git/SVN/Prompt.pm b/perl/Git/SVN/Prompt.pm index 3a6f8af0d9..a2cbcc8a58 100644 --- a/perl/Git/SVN/Prompt.pm +++ b/perl/Git/SVN/Prompt.pm @@ -120,25 +120,7 @@ sub username { sub _read_password { my ($prompt, $realm) = @_; - my $password = ''; - if (exists $ENV{GIT_ASKPASS}) { - open(PH, "-|", $ENV{GIT_ASKPASS}, $prompt); - $password = <PH>; - $password =~ s/[\012\015]//; # \n\r - close(PH); - } else { - print STDERR $prompt; - STDERR->flush; - require Term::ReadKey; - Term::ReadKey::ReadMode('noecho'); - while (defined(my $key = Term::ReadKey::ReadKey(0))) { - last if $key =~ /[\012\015]/; # \n\r - $password .= $key; - } - Term::ReadKey::ReadMode('restore'); - print STDERR "\n"; - STDERR->flush; - } + my $password = Git::prompt($prompt); $password; } |