diff options
author | David Aguilar <davvid@gmail.com> | 2011-08-18 00:23:46 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-19 00:09:19 -0700 |
commit | bc7a96a8965d4ce0651689301e1702a942dfb9f0 (patch) | |
tree | d4d6f70f97683090221c8f7ba4888a54e4d73a92 /mergetools/defaults | |
parent | 240dc3e8edb3ae4ee968febc006fa761811c60e6 (diff) | |
download | git-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/defaults | 46 |
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" +} |