From: David Aguilar Date: Fri, 15 Jan 2010 22:03:44 +0000 (-0800) Subject: difftool: Use eval to expand '--extcmd' expressions X-Git-Tag: v1.7.0-rc0~67^2~1 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=9f3d54d193d9edcf443c9dd62789af5e8e47635c;p=git.git 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 Signed-off-by: Junio C Hamano --- diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh index d806eaef5..69f6bcebc 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 69e1c3415..a183f1db4 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