Subject: Re: [PATCH 1/1] Use GIT_ASKPASS environment to launch thirdpart UI app to get password

From: David Aguilar <[email-masked]>
Date: Tue, 23 Feb 2010 21:13:10 -0800

On Tue, Feb 23, 2010 at 07:11:03PM +0800, Frank Li wrote:
> Default git-svn read charactor from terminal to get password. GUI will
> wait forever because don't know password need input.

What do you think about this message instead?

-- >8 --
Subject: [PATCH] git-svn: Support retrieving passwords with GIT_ASKPASS

git-svn reads passwords from an interactive terminal.
This behavior causes GUIs to hang waiting for git-svn to
complete.

Fix this problem by allowing a password-retrieving command
to be specified in GIT_ASKPASS.  SSH_ASKPASS is supported
as a fallback when GIT_ASKPASS is not provided.

(see note below)

> diff --git a/git-svn.perl b/git-svn.perl
> index 265852f..f9f104e 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -3966,18 +3966,25 @@ sub username {
>  
>  sub _read_password {
>  	my ($prompt, $realm) = @_;
> -	print STDERR $prompt;
> -	STDERR->flush;
> -	require Term::ReadKey;
> -	Term::ReadKey::ReadMode('noecho');
>  	my $password = '';
> -	while (defined(my $key = Term::ReadKey::ReadKey(0))) {
> -		last if $key =~ /[\012\015]/; # \n\r
> -		$password .= $key;
> +	if (exists $ENV{GIT_ASKPASS}) {
> +		open(PH, "$ENV{GIT_ASKPASS} \"$prompt\" |");
> +		$password = <PH>;
> +		$password =~ s/[\012\015]//; # \n\r
> +		close(PH);

I think Junio mentioned this in passing but I'll repeat it.

Many users already have SSH_ASKPASS defined.  It would be very
nice if we supported SSH_ASKPASS as a fallback when GIT_ASKPASS
is not provided.

-- 
		David