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>
Felipe Contreras committed
Apr 20, 2014 at 19:17 UTC
4ecc63d7f982aa65038048bcdaf49e99b428b028
1 file changed
+11
-3
git-mergetool.sh
+11
-3
@@ -277,7 +277,7 @@ merge_file () {
277
echo "Normal merge conflict for '$MERGED':"
278
describe_file "$local_mode" "local" "$LOCAL"
279
describe_file "$remote_mode" "remote" "$REMOTE"
280
- if "$prompt" = true
280
+ if test "$guessed_merge_tool" = true || test "$prompt" = true
281
then
282
printf "Hit return to start merge resolution tool (%s): " "$merge_tool"
283
read ans || return 1
@@ -315,7 +315,8 @@ merge_file () {
315
return 0
316
}
317
318
-prompt=$(git config --bool mergetool.prompt || echo true)
318
+prompt=$(git config --bool mergetool.prompt)
319
+guessed_merge_tool=false
320
321
while test $# != 0
322
do
@@ -373,7 +374,14 @@ prompt_after_failed_merge () {
374
375
if test -z "$merge_tool"
376
then
376
- merge_tool=$(get_merge_tool "$merge_tool") || exit
377
+ # Check if a merge tool has been configured
378
+ merge_tool=$(get_configured_merge_tool)
379
+ # Try to guess an appropriate merge tool if no tool has been set.
380
+ if test -z "$merge_tool"
381
+ then
382
+ merge_tool=$(guess_merge_tool) || exit
383
+ guessed_merge_tool=true
384
+ fi
385
fi
386
merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)"
387
merge_keep_temporaries="$(git config --bool mergetool.keepTemporaries || echo false)"