git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] difftool: Use eval to expand '--extcmd' expressions

From
David Aguilar <davvid@gmail.com>
Date
Jan 15, 2010, 07:16 UTC
Message-ID
<1263539762-8269-3-git-send-email-davvid@gmail.com>
In-Reply-To
<1263539762-8269-1-git-send-email-davvid@gmail.com>

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>
---
 git-difftool--helper.sh |    3 +--
 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 d806eae..a1c5c09 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 69e1c34..a183f1d 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
-- 
1.6.6.6.g627fb.dirty
Previous: Bill LearNext: Johannes Sixt
Message 7 of 9 in “t7800-difftool.sh: Simplify the --extcmd test”
  1. 1/3 t7800-difftool.sh: Simplify the --extcmd testDavid Aguilar, Jan 15, 2010
  2. 2/3 difftool: Add '-x' and as an alias for '--extcmd'David Aguilar, Jan 15, 2010
  3. Junio C HamanoJan 15, 2010
  4. Bill LearJan 15, 2010
  5. Junio C HamanoJan 16, 2010
  6. Bill LearJan 16, 2010
  7. 3/3 difftool: Use eval to expand '--extcmd' expressionsDavid Aguilar, Jan 15, 2010
  8. Johannes SixtJan 15, 2010
  9. David AguilarJan 15, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.