diff options
Diffstat (limited to 'git-difftool.perl')
| -rwxr-xr-x | git-difftool.perl | 28 | 
1 files changed, 26 insertions, 2 deletions
| diff --git a/git-difftool.perl b/git-difftool.perl index ba5e60a45e..adc42de875 100755 --- a/git-difftool.perl +++ b/git-difftool.perl @@ -1,5 +1,5 @@  #!/usr/bin/env perl -# Copyright (c) 2009 David Aguilar +# Copyright (c) 2009, 2010 David Aguilar  #  # This is a wrapper around the GIT_EXTERNAL_DIFF-compatible  # git-difftool--helper script. @@ -15,13 +15,17 @@ use warnings;  use Cwd qw(abs_path);  use File::Basename qw(dirname); +require Git; +  my $DIR = abs_path(dirname($0));  sub usage  {  	print << 'USAGE'; -usage: git difftool [--tool=<tool>] [-y|--no-prompt] ["git diff" options] +usage: git difftool [-t|--tool=<tool>] [-x|--extcmd=<cmd>] +                    [-y|--no-prompt]   [-g|--gui] +                    ['git diff' options]  USAGE  	exit 1;  } @@ -63,6 +67,26 @@ sub generate_command  			$ENV{GIT_DIFF_TOOL} = substr($arg, 7);  			next;  		} +		if ($arg eq '-x' || $arg eq '--extcmd') { +			usage() if $#ARGV <= $idx; +			$ENV{GIT_DIFFTOOL_EXTCMD} = $ARGV[$idx + 1]; +			$skip_next = 1; +			next; +		} +		if ($arg =~ /^--extcmd=/) { +			$ENV{GIT_DIFFTOOL_EXTCMD} = substr($arg, 9); +			next; +		} +		if ($arg eq '-g' || $arg eq '--gui') { +			eval { +				my $tool = Git::command_oneline('config', +				                                'diff.guitool'); +				if (length($tool)) { +					$ENV{GIT_DIFF_TOOL} = $tool; +				} +			}; +			next; +		}  		if ($arg eq '-y' || $arg eq '--no-prompt') {  			$ENV{GIT_DIFFTOOL_NO_PROMPT} = 'true';  			delete $ENV{GIT_DIFFTOOL_PROMPT}; | 
