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

[PATCH v3 3/3] difftool: don't assume that default sh is sane

From
David Aguilar <davvid@gmail.com>
Date
Oct 11, 2014, 08:39 UTC
Message-ID
<1413016778-94829-3-git-send-email-davvid@gmail.com>
In-Reply-To
<1413016778-94829-2-git-send-email-davvid@gmail.com>
From: Charles Bailey <cbailey32@bloomberg.net>

git-difftool used to create a command list script containing $( ... ) and explicitly calls "sh -c" with this list.

Instead, allow mergetool --tool-help to take a mode parameter and call mergetool directly to invoke the show_tool_help function. This mode parameter is intented for use solely by difftool.

Signed-off-by: Charles Bailey <cbailey32@bloomberg.net>
Helped-by: John Keeping <john@keeping.me.uk>
Signed-off-by: David Aguilar <davvid@gmail.com>
---
No changes since v2.
 git-difftool.perl | 6 +-----
 git-mergetool.sh  | 4 ++++
 2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/git-difftool.perl b/git-difftool.perl
index 18ca61e..598fcc2 100755
--- a/git-difftool.perl
+++ b/git-difftool.perl
@@ -47,13 +47,9 @@ sub find_worktree
 
 sub print_tool_help
 {
-	my $cmd = 'TOOL_MODE=diff';
-	$cmd .= ' && . "$(git --exec-path)/git-mergetool--lib"';
-	$cmd .= ' && show_tool_help';
-
 	# See the comment at the bottom of file_diff() for the reason behind
 	# using system() followed by exit() instead of exec().
-	my $rc = system('sh', '-c', $cmd);
+	my $rc = system(qw(git mergetool --tool-help=diff));
 	exit($rc | ($rc >> 8));
 }
 
diff --git a/git-mergetool.sh b/git-mergetool.sh
index cddb533..10782b8 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -327,6 +327,10 @@ guessed_merge_tool=false
 while test $# != 0
 do
 	case "$1" in
+	--tool-help=*)
+		TOOL_MODE=${1#--tool-help=}
+		show_tool_help
+		;;
 	--tool-help)
 		show_tool_help
 		;;
-- 
2.1.2.378.g89c0b73
Previous: David AguilarNext: Junio C Hamano
Message 3 of 6 in “git-sh-setup: move GIT_DIR initialization into a function”
  1. 1/3 git-sh-setup: move GIT_DIR initialization into a functionDavid Aguilar, Oct 11, 2014
  2. 2/3 mergetool: don't require a work tree for --tool-helpDavid Aguilar, Oct 11, 2014
  3. 3/3 difftool: don't assume that default sh is saneDavid Aguilar, Oct 11, 2014
  4. Junio C HamanoOct 13, 2014
  5. David AguilarOct 15, 2014
  6. David AguilarOct 15, 2014

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.