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

[PATCH v2 2/2] difftool: don't assume that default sh is sane

From
David Aguilar <davvid@gmail.com>
Date
Oct 10, 2014, 08:51 UTC
Message-ID
<1412931104-74648-2-git-send-email-davvid@gmail.com>
In-Reply-To
<1412931104-74648-1-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>
---
Changes since v1:

The case statement for --tool-help=* was made simpler thanks to John.

 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 a502430..ea8fe37 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.377.g0e18f12
Previous: David AguilarNext: Charles Bailey
Message 2 of 5 in “mergetool: don't require a work tree for --tool-help”
  1. 1/2 mergetool: don't require a work tree for --tool-helpDavid Aguilar, Oct 10, 2014
  2. 2/2 difftool: don't assume that default sh is saneDavid Aguilar, Oct 10, 2014
  3. Charles BaileyOct 10, 2014
  4. David AguilarOct 11, 2014
  5. Charles BaileyOct 11, 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.