mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
mergetool--lib: Allow custom commands to override built-ins
Allow users to override the default commands provided by the mergetools/* scriptlets. Users occasionally run into problems where they expect to be able to override the built-in tool names. The documentation does not explicitly mention that built-ins cannot be overridden, so it's easy to assume that it should work. Lift this restriction so that built-in tools are handled the same way as user-configured tools. Add tests to guarantee this behavior. A nice benefit of this change is that it protects users from having future versions of git trump their custom configuration with a new built-in tool. C.f.: http://stackoverflow.com/questions/7435002/mergetool-from-gitconfig-being-ignored http://thread.gmane.org/gmane.comp.version-control.msysgit/13188 http://thread.gmane.org/gmane.comp.version-control.git/148267 Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
889d35899b
commit
a427ef7acc
@@ -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 () {
|
||||
|
||||
Reference in New Issue
Block a user