On Tue, Dec 14, 2010 at 06:27:48PM +0000, Ramsay Jones wrote: > > In particular, test 14 'difftool last flag wins' fails. This is > caused by git-difftool.perl passing both GIT_DIFFTOOL_NO_PROMPT > (='true') and GIT_DIFFTOOL_PROMPT (='true') to the difftool helper > script. Despite the appropriate key being deleted from the ENV > hash, it seems that once a key has been set in the hash, it gets > passed along to the system() call. (ie deleting the key does not > do the equivalent of unsetenv()). > > In order to fix the problem, we keep track of the required prompt > state while processing the arguments, and then set the relevant > ENV hash key only once at the end. > > Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxx> > --- > git-difftool.perl | 12 ++++++++---- > 1 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/git-difftool.perl b/git-difftool.perl > index e95e4ad..ced1615 100755 > --- a/git-difftool.perl > +++ b/git-difftool.perl > @@ -52,6 +52,7 @@ sub generate_command > my @command = (exe('git'), 'diff'); > my $skip_next = 0; > my $idx = -1; > + my $prompt = ''; Would it be simpler to set $prompt = 1 and then flip it to 0 when -y | or --no-prompt is supplied? > for my $arg (@ARGV) { > $idx++; > if ($skip_next) { > @@ -89,13 +90,11 @@ sub generate_command > next; > } > if ($arg eq '-y' || $arg eq '--no-prompt') { > - $ENV{GIT_DIFFTOOL_NO_PROMPT} = 'true'; > - delete $ENV{GIT_DIFFTOOL_PROMPT}; > + $prompt = 'no'; > next; > } > if ($arg eq '--prompt') { > - $ENV{GIT_DIFFTOOL_PROMPT} = 'true'; > - delete $ENV{GIT_DIFFTOOL_NO_PROMPT}; > + $prompt = 'yes'; > next; > } > if ($arg eq '-h' || $arg eq '--help') { > @@ -103,6 +102,11 @@ sub generate_command > } > push @command, $arg; > } > + if ($prompt eq 'yes') { This would become: if ($prompt) { ... } else { ... } > + $ENV{GIT_DIFFTOOL_PROMPT} = 'true'; > + } elsif ($prompt eq 'no') { > + $ENV{GIT_DIFFTOOL_NO_PROMPT} = 'true'; > + } > return @command > } > > -- > 1.7.3 > > -- David -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html