threads / discuss / 26471

Re: [msysGit] git-svn.perl should check GIT_ASKPASS environment

Subject: Re: [msysGit] git-svn.perl should check GIT_ASKPASS environment

## tl;dr

4 messages between Feb 11, 2011 and Feb 11, 2011.

replies: 3people: 2as markdown or json

Erik Faye-Lund· Feb 11, 2011, 09:25 UTC · lore

On Fri, Feb 11, 2011 at 9:17 AM, Jose Roberto Garcia Chico <jose@toro-asia.com> wrote:

Show 15 quoted lines
> git-svn.perl problem.
>
> prompt:
>        print STDERR $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));
>
> should check GIT_ASKPASS environment.
>
> For further information
>
> http://code.google.com/p/tortoisegit/issues/detail?id=706
>

As was already said in the thread you're linking to, this isn't a Windows-specific git-issue. CC'ing the main Git mailing list, where this discussion belongs.

But I don't think it should check GIT_ASKPASS, GIT_ASKPASS isn't a general-purpose dialog-box hook, it's a hook for getting *passwords*. To allow git-svn to query the user of a non-terminal user, another mechanism would probably be created. But in any case, I we should do something other than just waiting if we're not connected to a TTY. I don't really know Perl that well, but perhaps something like this does the trick?

diff --git a/git-svn.perl b/git-svn.perl
index 177dd25..24f3486 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -3964,6 +3964,9 @@ sub ssl_server_trust {
 	                               issuer_dname fingerprint);
 	my $choice;
 prompt:
+	if (!-t STDERR || !-t STDIN) {
+		return -1;
+	}
 	print STDERR $may_save ?
 	      "(R)eject, accept (t)emporarily or accept (p)ermanently? " :
 	      "(R)eject or accept (t)emporarily? ";
Frank Li· Feb 11, 2011, 09:37 UTC · re: Erik Faye-Lund · lore
Show 8 quoted lines
> But I don't think it should check GIT_ASKPASS, GIT_ASKPASS isn't a
> general-purpose dialog-box hook, it's a hook for getting *passwords*.
> To allow git-svn to query the user of a non-terminal user, another
> mechanism would probably be created. But in any case, I we should do
> something other than just waiting if we're not connected to a TTY. I
> don't really know Perl that well, but perhaps something like this does
> the trick?
>

SSH_ASKPASS is used to accept "Enter your OpenSSH passphrase". refer to git-gui/git-gui--askpass

GIT_ASKPASS should be similar with SSH_ASKPASS. git-svn can use GIT_ASKPASS hook to launch third part application to accept certification.

Erik Faye-Lund· Feb 11, 2011, 10:28 UTC · re: Frank Li · lore
On Fri, Feb 11, 2011 at 10:37 AM, Frank Li <lznuaa@gmail.com> wrote:
Show 12 quoted lines
>> But I don't think it should check GIT_ASKPASS, GIT_ASKPASS isn't a
>> general-purpose dialog-box hook, it's a hook for getting *passwords*.
>> To allow git-svn to query the user of a non-terminal user, another
>> mechanism would probably be created. But in any case, I we should do
>> something other than just waiting if we're not connected to a TTY. I
>> don't really know Perl that well, but perhaps something like this does
>> the trick?
>>
>
> SSH_ASKPASS is used to accept "Enter your OpenSSH passphrase".
> refer to git-gui/git-gui--askpass
>

git-gui--askpass can ask for a password, or yes/no questions. But this is neither, it's a reject/accept temporary/accept permanently question.

Perhaps the prompt could be rewritten as two yes/no questions, though? Something like "Accept certificate? (yes/no)" and if the answer is "yes", query with something like "Store certificate? (yes/no)". Dunno...

Frank Li· Feb 11, 2011, 11:34 UTC · re: Erik Faye-Lund · lore
Show 11 quoted lines
>> SSH_ASKPASS is used to accept "Enter your OpenSSH passphrase".
>> refer to git-gui/git-gui--askpass
>>
>
> git-gui--askpass can ask for a password, or yes/no questions. But this
> is neither, it's a reject/accept temporary/accept permanently
> question.
>
> Perhaps the prompt could be rewritten as two yes/no questions, though?
> Something like "Accept certificate? (yes/no)" and if the answer is
> "yes", query with something like "Store certificate? (yes/no)".

I think that's fine. Frank Li

← back to recent threads