Merge branch 'da/mergetool-custom'

The actual external command to run for mergetool backend can be
specified with difftool/mergetool.$name.cmd configuration
variables, but this mechanism was ignored for the backends we
natively support.

* da/mergetool-custom:
  mergetool--lib: Allow custom commands to override built-ins
This commit is contained in:
Junio C Hamano
2012-10-01 12:58:57 -07:00
4 changed files with 64 additions and 28 deletions

View File

@ -104,11 +104,47 @@ run_merge_tool () {
if merge_mode
then
merge_cmd "$1"
run_merge_cmd "$1"
else
run_diff_cmd "$1"
fi
return $status
}
# Run a either a configured or built-in diff tool
run_diff_cmd () {
merge_tool_cmd="$(get_merge_tool_cmd "$1")"
if test -n "$merge_tool_cmd"
then
( eval $merge_tool_cmd )
status=$?
return $status
else
diff_cmd "$1"
fi
return $status
}
# Run a either a configured or built-in merge tool
run_merge_cmd () {
merge_tool_cmd="$(get_merge_tool_cmd "$1")"
if test -n "$merge_tool_cmd"
then
trust_exit_code="$(git config --bool \
mergetool."$1".trustExitCode || echo false)"
if test "$trust_exit_code" = "false"
then
touch "$BACKUP"
( eval $merge_tool_cmd )
status=$?
check_unchanged
else
( eval $merge_tool_cmd )
status=$?
fi
return $status
else
merge_cmd "$1"
fi
}
list_merge_tool_candidates () {