зеркало из https://github.com/microsoft/git.git
mergetool: support --tool-help option like difftool does
This way we do not have to risk the list of tools going out of sync
between the implementation and the documentation.
In the same spirit as bf73fc2
(difftool: print list of valid tools
with '--tool-help', 2012-03-29), trim the list of merge backends in
the documentation. We do not want to have a complete list of valid
tools; we only want a list to help people guess what kind of things
the tools do to be specified there, and refer them to --tool-help
for a complete list.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
e6dfbcf12b
Коммит
109859e274
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
*,*=*)
|
||||
|
|
Загрузка…
Ссылка в новой задаче