aboutsummaryrefslogtreecommitdiff
path: root/mergetools/defaults
diff options
context:
space:
mode:
authorDavid Aguilar <davvid@gmail.com>2011-08-18 00:23:46 -0700
committerJunio C Hamano <gitster@pobox.com>2011-08-19 00:09:19 -0700
commitbc7a96a8965d4ce0651689301e1702a942dfb9f0 (patch)
treed4d6f70f97683090221c8f7ba4888a54e4d73a92 /mergetools/defaults
parent240dc3e8edb3ae4ee968febc006fa761811c60e6 (diff)
downloadgit-bc7a96a8965d4ce0651689301e1702a942dfb9f0.tar.gz
git-bc7a96a8965d4ce0651689301e1702a942dfb9f0.tar.xz
mergetool--lib: Refactor tools into separate files
Individual merge tools are now defined in a mergetools/$tool file which is sourced at runtime. The individual files are installed into $(git --exec-path)/mergetools/. New tools can be added by creating a new file instead of editing the git-mergetool--lib.sh scriptlet. http://thread.gmane.org/gmane.comp.version-control.git/134906/focus=135006 Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'mergetools/defaults')
-rw-r--r--mergetools/defaults46
1 files changed, 46 insertions, 0 deletions
diff --git a/mergetools/defaults b/mergetools/defaults
new file mode 100644
index 000000000..1d8f2a3dd
--- /dev/null
+++ b/mergetools/defaults
@@ -0,0 +1,46 @@
+# Redefined by builtin tools
+can_merge () {
+ return 0
+}
+
+can_diff () {
+ return 0
+}
+
+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=$?
+ 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
+ return $status
+}
+
+translate_merge_tool_path () {
+ echo "$1"
+}