diff options
author | Tim Henigan <tim.henigan@gmail.com> | 2012-03-22 15:52:17 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-03-23 11:46:25 -0700 |
commit | 850896042a42c1c16912a3981ca844e2cbcd14d4 (patch) | |
tree | f38da913cd54a31969bff0381abbbc12642b8249 | |
parent | difftool: parse options using Getopt::Long (diff) | |
download | tgif-850896042a42c1c16912a3981ca844e2cbcd14d4.tar.xz |
difftool: add '--no-gui' option
This commit teaches difftool to handle the '--no-gui' option. This option
negates the existing '--gui' option. The last setting given on the command
line wins.
This allows a user to configure "[alias] mdt = difftool --gui", but still
have the ability to override the setting without error:
$ git mdt --no-gui
Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-difftool.perl | 7 | ||||
-rwxr-xr-x | t/t7800-difftool.sh | 13 |
2 files changed, 17 insertions, 3 deletions
diff --git a/git-difftool.perl b/git-difftool.perl index bade735cc1..93e84e8d3d 100755 --- a/git-difftool.perl +++ b/git-difftool.perl @@ -22,7 +22,8 @@ sub usage { print << 'USAGE'; usage: git difftool [-t|--tool=<tool>] - [-x|--extcmd=<cmd>] [-g|--gui] + [-x|--extcmd=<cmd>] + [-g|--gui] [--no-gui] [--prompt] [-y|--no-prompt] ['git diff' options] USAGE @@ -49,7 +50,7 @@ sub exe # parse command-line options. all unrecognized options and arguments # are passed through to the 'git diff' command. my ($difftool_cmd, $extcmd, $gui, $help, $prompt); -GetOptions('g|gui' => \$gui, +GetOptions('g|gui!' => \$gui, 'h' => \$help, 'prompt!' => \$prompt, 'y' => sub { $prompt = 0; }, @@ -75,7 +76,7 @@ if (defined($extcmd)) { usage(); } } -if (defined($gui)) { +if ($gui) { my $guitool = ""; $guitool = Git::config('diff.guitool'); if (length($guitool) > 0) { diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 4fb4c9384a..e716d066c9 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh @@ -94,6 +94,19 @@ test_expect_success PERL 'difftool honors --gui' ' restore_test_defaults ' +test_expect_success PERL 'difftool --gui last setting wins' ' + git config diff.guitool bogus-tool && + git difftool --no-prompt --gui --no-gui && + + git config merge.tool bogus-tool && + git config diff.tool bogus-tool && + git config diff.guitool test-tool && + diff=$(git difftool --no-prompt --no-gui --gui branch) && + test "$diff" = "branch" && + + restore_test_defaults +' + test_expect_success PERL 'difftool --gui works without configured diff.guitool' ' git config diff.tool test-tool && |