mergetool: run prompt only if guessed tool

It's annoying to see the prompt:

  Hit return to start merge resolution tool (foo):

Every time the user does 'git mergetool' even if the user already
configured 'foo' as the wanted tool.

Display this prompt only when the user hasn't explicitly configured a
tool.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Felipe Contreras 2014-04-20 19:17:34 -05:00 committed by Junio C Hamano
parent 779792a5f2
commit 4ecc63d7f9

View File

@ -277,7 +277,7 @@ merge_file () {
echo "Normal merge conflict for '$MERGED':" echo "Normal merge conflict for '$MERGED':"
describe_file "$local_mode" "local" "$LOCAL" describe_file "$local_mode" "local" "$LOCAL"
describe_file "$remote_mode" "remote" "$REMOTE" describe_file "$remote_mode" "remote" "$REMOTE"
if "$prompt" = true if test "$guessed_merge_tool" = true || test "$prompt" = true
then then
printf "Hit return to start merge resolution tool (%s): " "$merge_tool" printf "Hit return to start merge resolution tool (%s): " "$merge_tool"
read ans || return 1 read ans || return 1
@ -315,7 +315,8 @@ merge_file () {
return 0 return 0
} }
prompt=$(git config --bool mergetool.prompt || echo true) prompt=$(git config --bool mergetool.prompt)
guessed_merge_tool=false
while test $# != 0 while test $# != 0
do do
@ -373,7 +374,14 @@ prompt_after_failed_merge () {
if test -z "$merge_tool" if test -z "$merge_tool"
then then
merge_tool=$(get_merge_tool "$merge_tool") || exit # Check if a merge tool has been configured
merge_tool=$(get_configured_merge_tool)
# Try to guess an appropriate merge tool if no tool has been set.
if test -z "$merge_tool"
then
merge_tool=$(guess_merge_tool) || exit
guessed_merge_tool=true
fi
fi fi
merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)" merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)"
merge_keep_temporaries="$(git config --bool mergetool.keepTemporaries || echo false)" merge_keep_temporaries="$(git config --bool mergetool.keepTemporaries || echo false)"