Re: mergetool: include custom tools in '--tool-help'
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:55:55
John Keeping [off-list ref] writes:
'git mergetool --tool-help' only lists builtin tools, not those that the user has configured via a 'mergetool.<tool>.cmd' config value. Fix this by inspecting the tools configured in this way and adding them to the available and unavailable lists before displaying them.
Although I am not a mergetool user, I would imagine that it would make sense to show it as available. Just like "git help -a" lists subcommands in a way that can be easy to tell which ones are the standard ones and which ones are user customizations, this may want to give a similar distinction, though. I dunno.
quoted hunk
Signed-off-by: John Keeping <redacted> --- After the recent changes to mergetool, do we want to do something like this as well, so that 'git mergetool --tool-help' will display any tools configured by the user/system administrator? This is on top of jk/mergetool. git-mergetool--lib.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index 1d0fb12..f9a617c 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh@@ -206,6 +206,29 @@ list_merge_tool_candidates () { esac } +# Adds tools from git-config to the available and unavailable lists. +# The tools are found in "$1.<tool>.cmd". +add_config_tools() { + section=$1 + + eval $(git config --get-regexp $section'\..*\.cmd' | + while read -r key value + do + tool=${key#mergetool.} + tool=${tool%.cmd} + + tool=$(echo "$tool" |sed -e 's/'\''/'\''\\'\'\''/g') + + cmd=$(eval -- "set -- $value"; echo "$1") + if type "$cmd" >/dev/null 2>&1 + then + echo "available=\"\${available}\"'$tool'\"\$LF\"" + else + echo "unavailable=\"\${unavailable}\"'$tool'\"\$LF\"" + fi + done) +} + show_tool_help () { unavailable= available= LF=' '@@ -223,6 +246,12 @@ show_tool_help () { fi done + add_config_tools mergetool + if diff_mode + then + add_config_tools difftool + fi + cmd_name=${TOOL_MODE}tool if test -n "$available" then