diff options
author | David Aguilar <davvid@gmail.com> | 2010-01-15 14:03:44 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-15 15:04:45 -0800 |
commit | 9f3d54d193d9edcf443c9dd62789af5e8e47635c (patch) | |
tree | 0e774da7ac3481fb9de4e9178bb90fca2101c960 | |
parent | f47f1e2ce8b4022113120b32decb4436341dc3aa (diff) | |
download | git-9f3d54d193d9edcf443c9dd62789af5e8e47635c.tar.gz |
difftool: Use eval to expand '--extcmd' expressions
It was not possible to pass quoted commands to '--extcmd'.
By using 'eval' we ensure that expressions with spaces and
quotes are supported.
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-difftool--helper.sh | 3 | ||||
-rwxr-xr-x | t/t7800-difftool.sh | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh index d806eaef54..69f6bcebcb 100755 --- a/git-difftool--helper.sh +++ b/git-difftool--helper.sh @@ -48,11 +48,10 @@ launch_merge_tool () { fi if use_ext_cmd; then - $GIT_DIFFTOOL_EXTCMD "$LOCAL" "$REMOTE" + eval $GIT_DIFFTOOL_EXTCMD '"$LOCAL"' '"$REMOTE"' else run_merge_tool "$merge_tool" fi - } if ! use_ext_cmd; then diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 69e1c34159..a183f1db4a 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh @@ -235,8 +235,21 @@ test_expect_success 'difftool --extcmd cat' ' test_expect_success 'difftool -x cat' ' diff=$(git difftool --no-prompt -x cat branch) && test "$diff" = branch"$LF"master +' + +test_expect_success 'difftool --extcmd echo arg1' ' + diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"echo\ \$1\" branch) + test "$diff" = file +' +test_expect_success 'difftool --extcmd cat arg1' ' + diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$1\" branch) + test "$diff" = master +' +test_expect_success 'difftool --extcmd cat arg2' ' + diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$2\" branch) + test "$diff" = branch ' test_done |