diff options
author | David Aguilar <davvid@gmail.com> | 2010-01-09 20:02:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-09 22:41:30 -0800 |
commit | 1c6f5b52b7b13bbc6cf404cb5ef9e64fda37655c (patch) | |
tree | 99d43713fe0d6097883ef9d254e263bcd3ea34a8 /git-difftool--helper.sh | |
parent | 61ed71dcff8448b0700ef032aa1f962649306624 (diff) | |
download | git-1c6f5b52b7b13bbc6cf404cb5ef9e64fda37655c.tar.gz |
difftool: Allow specifying unconfigured commands with --extcmd
git-difftool requires difftool.<tool>.cmd configuration even when
tools use the standard "$diffcmd $from $to" form. This teaches
git-difftool to run these tools in lieu of configuration by
allowing the command to be specified on the command line.
Reference: http://article.gmane.org/gmane.comp.version-control.git/133377
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-difftool--helper.sh')
-rwxr-xr-x | git-difftool--helper.sh | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh index 3621f28c79..d806eaef54 100755 --- a/git-difftool--helper.sh +++ b/git-difftool--helper.sh @@ -19,6 +19,11 @@ should_prompt () { fi } +# Indicates that --extcmd=... was specified +use_ext_cmd () { + test -n "$GIT_DIFFTOOL_EXTCMD" +} + launch_merge_tool () { # Merged is the filename as it appears in the work tree # Local is the contents of a/filename @@ -33,18 +38,29 @@ launch_merge_tool () { # the user with the real $MERGED name before launching $merge_tool. if should_prompt; then printf "\nViewing: '$MERGED'\n" - printf "Hit return to launch '%s': " "$merge_tool" + if use_ext_cmd; then + printf "Hit return to launch '%s': " \ + "$GIT_DIFFTOOL_EXTCMD" + else + printf "Hit return to launch '%s': " "$merge_tool" + fi read ans fi - run_merge_tool "$merge_tool" + if use_ext_cmd; then + $GIT_DIFFTOOL_EXTCMD "$LOCAL" "$REMOTE" + else + run_merge_tool "$merge_tool" + fi + } -# GIT_DIFF_TOOL indicates that --tool=... was specified -if test -n "$GIT_DIFF_TOOL"; then - merge_tool="$GIT_DIFF_TOOL" -else - merge_tool="$(get_merge_tool)" || exit +if ! use_ext_cmd; then + if test -n "$GIT_DIFF_TOOL"; then + merge_tool="$GIT_DIFF_TOOL" + else + merge_tool="$(get_merge_tool)" || exit + fi fi # Launch the merge tool on each path provided by 'git diff' |