John Keeping <j...@keeping.me.uk> 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.

>
> Signed-off-by: John Keeping <j...@keeping.me.uk>
> ---
> 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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to