Merge branch 'jc/mergetool-tool-help'

"git mergetool" did not support --tool-help option to give the list
of supported backends, like "git difftool" does.

* jc/mergetool-tool-help:
  mergetool: support --tool-help option like difftool does
This commit is contained in:
Junio C Hamano 2012-07-24 14:05:26 -07:00
commit cf7864837c
3 changed files with 49 additions and 5 deletions

View File

@ -27,9 +27,9 @@ OPTIONS
-t <tool>::
--tool=<tool>::
Use the merge resolution program specified by <tool>.
Valid merge tools are:
araxis, bc3, diffuse, ecmerge, emerge, gvimdiff, kdiff3,
meld, opendiff, p4merge, tkdiff, tortoisemerge, vimdiff and xxdiff.
Valid values include emerge, gvimdiff, kdiff3,
meld, vimdiff, and tortoisemerge. Run `git mergetool --tool-help`
for the list of valid <tool> settings.
+
If a merge resolution program is not specified, 'git mergetool'
will use the configuration variable `merge.tool`. If the

View File

@ -111,7 +111,7 @@ run_merge_tool () {
return $status
}
guess_merge_tool () {
list_merge_tool_candidates () {
if merge_mode
then
tools="tortoisemerge"
@ -136,6 +136,10 @@ guess_merge_tool () {
tools="$tools emerge vimdiff"
;;
esac
}
guess_merge_tool () {
list_merge_tool_candidates
echo >&2 "merge tool candidates: $tools"
# Loop over each candidate and stop when a valid merge tool is found.

View File

@ -8,7 +8,7 @@
# at the discretion of Junio C Hamano.
#
USAGE='[--tool=tool] [-y|--no-prompt|--prompt] [file to merge] ...'
USAGE='[--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [file to merge] ...'
SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
TOOL_MODE=merge
@ -284,11 +284,51 @@ merge_file () {
return 0
}
show_tool_help () {
TOOL_MODE=merge
list_merge_tool_candidates
unavailable= available= LF='
'
for i in $tools
do
merge_tool_path=$(translate_merge_tool_path "$i")
if type "$merge_tool_path" >/dev/null 2>&1
then
available="$available$i$LF"
else
unavailable="$unavailable$i$LF"
fi
done
if test -n "$available"
then
echo "'git mergetool --tool=<tool>' may be set to one of the following:"
echo "$available" | sort | sed -e 's/^/ /'
else
echo "No suitable tool for 'git mergetool --tool=<tool>' found."
fi
if test -n "$unavailable"
then
echo
echo 'The following tools are valid, but not currently available:'
echo "$unavailable" | sort | sed -e 's/^/ /'
fi
if test -n "$unavailable$available"
then
echo
echo "Some of the tools listed above only work in a windowed"
echo "environment. If run in a terminal-only session, they will fail."
fi
exit 0
}
prompt=$(git config --bool mergetool.prompt || echo true)
while test $# != 0
do
case "$1" in
--tool-help)
show_tool_help
;;
-t|--tool*)
case "$#,$1" in
*,*=*)