Skip to content

Commit

Permalink
Merge branch 'fc/mergetool-prompt'
Browse files Browse the repository at this point in the history
mergetool.prompt used to default to 'true', always causing a confirmation
"do you really want to run the tool on this path" to be shown.

Among the two purposes the prompt serves, ignore the use case to
confirm that the user wants to view particular path with the named
tool, and make the prompt only to confirm the choice of the tool
made by autodetection and defaulting.  For those who configured the
tool explicitly, the prompt shown for the latter purpose is simply
annoying.

Strictly speaking, this is a backward incompatible change and the
users need to explicitly set the variable to 'true' if they want to
resurrect the now-ignored use case.

* fc/mergetool-prompt:
  mergetool: document the default for --[no-]prompt
  mergetool: run prompt only if guessed tool
  • Loading branch information
Junio C Hamano committed Jun 3, 2014
2 parents e379831 + c15bb0c commit 7ea60c1
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
8 changes: 5 additions & 3 deletions Documentation/git-mergetool.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,13 @@ success of the resolution after the custom tool has exited.
--no-prompt::
Don't prompt before each invocation of the merge resolution
program.
This is the default if the merge resolution program is
explicitly specified with the `--tool` option or with the
`merge.tool` configuration variable.

--prompt::
Prompt before each invocation of the merge resolution program.
This is the default behaviour; the option is provided to
override any configuration settings.
Prompt before each invocation of the merge resolution program
to give the user a chance to skip the path.

TEMPORARY FILES
---------------
Expand Down
14 changes: 11 additions & 3 deletions git-mergetool.sh
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ merge_file () {
echo "Normal merge conflict for '$MERGED':"
describe_file "$local_mode" "local" "$LOCAL"
describe_file "$remote_mode" "remote" "$REMOTE"
if "$prompt" = true
if test "$guessed_merge_tool" = true || test "$prompt" = true
then
printf "Hit return to start merge resolution tool (%s): " "$merge_tool"
read ans || return 1
Expand Down Expand Up @@ -315,7 +315,8 @@ merge_file () {
return 0
}

prompt=$(git config --bool mergetool.prompt || echo true)
prompt=$(git config --bool mergetool.prompt)
guessed_merge_tool=false

while test $# != 0
do
Expand Down Expand Up @@ -373,7 +374,14 @@ prompt_after_failed_merge () {

if test -z "$merge_tool"
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
merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)"
merge_keep_temporaries="$(git config --bool mergetool.keepTemporaries || echo false)"
Expand Down

0 comments on commit 7ea60c1

Please sign in to comment.