From: Charles Bailey <hidden> Date: 2016-06-15 23:01:59
From: Charles Bailey <redacted>
Signed-off-by: Charles Bailey <redacted>
---
You can call git difftool --tool-help outside of a work tree but not
mergetool --tool-help but there's not real reason for this restriction
and it can be easily relaxed by deferring the require_work_tree call
until after the options have been parsed.
git-mergetool.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
From: Charles Bailey <hidden> Date: 2016-06-15 23:01:59
From: Charles Bailey <redacted>
git-difftool used to create a command list script containing $( ... )
and explicitly call "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 <redacted>
---
Another issue for Solaris. Originally I had a fix for this that
substituted "@SHELL_PATH@" even inside perl scripts but I felt that
having an interface for show_tool_help was a little neater all round but
I welcome alternative views.
git-difftool.perl | 6 +-----
git-mergetool.sh | 12 +++++++++++-
2 files changed, 12 insertions(+), 6 deletions(-)
@@ -47,13 +47,9 @@ sub find_worktreesubprint_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));}
From: John Keeping <hidden> Date: 2016-06-15 23:01:59
On Sat, Jul 19, 2014 at 05:35:17PM +0100, Charles Bailey wrote:
quoted hunk
From: Charles Bailey <redacted>
git-difftool used to create a command list script containing $( ... )
and explicitly call "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 <redacted>
---
Another issue for Solaris. Originally I had a fix for this that
substituted "@SHELL_PATH@" even inside perl scripts but I felt that
having an interface for show_tool_help was a little neater all round but
I welcome alternative views.
git-difftool.perl | 6 +-----
git-mergetool.sh | 12 +++++++++++-
2 files changed, 12 insertions(+), 6 deletions(-)
@@ -47,13 +47,9 @@ sub find_worktreesubprint_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));}
What's the reason for forcing `--tool-help` to be the last option?
Wouldn't it be simpler to just change the top-level case statement to:
--tool-help=*)
TOOL_MODE=${1#--tool-help=}
show_tool_help
;;
--tool-help)
show_tool_help
;;
From: Charles Bailey <hidden> Date: 2016-06-15 23:01:59
On Sat, Jul 19, 2014 at 06:21:32PM +0100, John Keeping wrote:
What's the reason for forcing `--tool-help` to be the last option?
Wouldn't it be simpler to just change the top-level case statement to:
--tool-help=*)
TOOL_MODE=${1#--tool-help=}
show_tool_help
;;
--tool-help)
show_tool_help
;;
It doesn't make sense to use --tool-help with other parameters so issuing
an error made sense to me at the time. You've pointed out to me that I
don't error when those other options come first so I'm now unsure how
valuable this behaviour is, now. (I can't immediately see a really neat way
to give a diagnostic if other options do come first.)
Your version is good, obviously simpler.
From: David Aguilar <hidden> Date: 2016-06-15 23:02:04
On Sat, Jul 19, 2014 at 05:35:17PM +0100, Charles Bailey wrote:
From: Charles Bailey <redacted>
git-difftool used to create a command list script containing $( ... )
and explicitly call "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 <redacted>
---
Another issue for Solaris. Originally I had a fix for this that
substituted "@SHELL_PATH@" even inside perl scripts but I felt that
having an interface for show_tool_help was a little neater all round but
I welcome alternative views.
I definitely agree that having an interface is nice and tidy.
@@ -47,13 +47,9 @@ sub find_worktreesubprint_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));
I believe qw() in list context is considered deprecated.
cheers,
--
David
@@ -47,13 +47,9 @@ sub find_worktreesubprint_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));
I believe qw() in list context is considered deprecated.
Sorry for the noise, I got my warnings mixed up.
It's only deprecated when used as parentheses, so this is fine as-is.
--
David