summaryrefslogtreecommitdiff
path: root/mergetools
diff options
context:
space:
mode:
authorDavid Aguilar <davvid@gmail.com>2012-09-25 07:48:11 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-09-25 16:04:39 (GMT)
commita427ef7acc9d932d1c203dd2fae67f51c4b1d1e8 (patch)
treeec1f72cc31d37983ae461a9211c32f806fb381d9 /mergetools
parent889d35899ba64640e47798681ecb34a4be043bad (diff)
downloadgit-a427ef7acc9d932d1c203dd2fae67f51c4b1d1e8.zip
git-a427ef7acc9d932d1c203dd2fae67f51c4b1d1e8.tar.gz
git-a427ef7acc9d932d1c203dd2fae67f51c4b1d1e8.tar.bz2
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>
Diffstat (limited to 'mergetools')
-rw-r--r--mergetools/defaults28
1 files changed, 2 insertions, 26 deletions
diff --git a/mergetools/defaults b/mergetools/defaults
index 1d8f2a3..21e63ec 100644
--- a/mergetools/defaults
+++ b/mergetools/defaults
@@ -8,36 +8,12 @@ can_diff () {
}
diff_cmd () {
- merge_tool_cmd="$(get_merge_tool_cmd "$1")"
- if test -z "$merge_tool_cmd"
- then
- status=1
- break
- fi
- ( eval $merge_tool_cmd )
- status=$?
+ status=1
return $status
}
merge_cmd () {
- merge_tool_cmd="$(get_merge_tool_cmd "$1")"
- if test -z "$merge_tool_cmd"
- then
- status=1
- break
- fi
- 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
+ status=1
return $status
}