Commit 073678b8 authored by David Aguilar's avatar David Aguilar Committed by Junio C Hamano

mergetools: simplify how we handle "vim" and "defaults"

Remove the exceptions for "vim" and "defaults" in the mergetool library
so that every filename in mergetools/ matches 1:1 with the name of a
valid built-in tool.

Define the trivial fallback definition of shell functions in-line in
git-mergetool-lib script, instead of dot-sourcing them from another
file.  The result is much easier to follow.

[jc: squashed in an update from John Keeping as well]
Signed-off-by: David Aguilar's avatarDavid Aguilar <davvid@gmail.com>
Signed-off-by: 's avatarJunio C Hamano <gitster@pobox.com>
parent 62957bea
#!/bin/sh
# git-mergetool--lib is a library for common merge tool functions
MERGE_TOOLS_DIR=$(git --exec-path)/mergetools
diff_mode() {
test "$TOOL_MODE" = diff
}
......@@ -44,19 +46,32 @@ valid_tool () {
}
setup_tool () {
case "$1" in
vim*|gvim*)
tool=vim
;;
*)
tool="$1"
;;
esac
mergetools="$(git --exec-path)/mergetools"
tool="$1"
# Fallback definitions, to be overriden by tools.
can_merge () {
return 0
}
can_diff () {
return 0
}
diff_cmd () {
status=1
return $status
}
merge_cmd () {
status=1
return $status
}
# Load the default definitions
. "$mergetools/defaults"
if ! test -f "$mergetools/$tool"
translate_merge_tool_path () {
echo "$1"
}
if ! test -f "$MERGE_TOOLS_DIR/$tool"
then
# Use a special return code for this case since we want to
# source "defaults" even when an explicit tool path is
......@@ -66,7 +81,7 @@ setup_tool () {
fi
# Load the redefined functions
. "$mergetools/$tool"
. "$MERGE_TOOLS_DIR/$tool"
if merge_mode && ! can_merge
then
......@@ -194,24 +209,10 @@ list_merge_tool_candidates () {
show_tool_help () {
unavailable= available= LF='
'
scriptlets="$(git --exec-path)"/mergetools
for i in "$scriptlets"/*
for i in "$MERGE_TOOLS_DIR"/*
do
. "$scriptlets"/defaults
. "$i"
tool="$(basename "$i")"
if test "$tool" = "defaults"
then
continue
elif merge_mode && ! can_merge
then
continue
elif diff_mode && ! can_diff
then
continue
fi
tool=$(basename "$i")
setup_tool "$tool" 2>/dev/null || continue
merge_tool_path=$(translate_merge_tool_path "$tool")
if type "$merge_tool_path" >/dev/null 2>&1
......
# Redefined by builtin tools
can_merge () {
return 0
}
can_diff () {
return 0
}
diff_cmd () {
status=1
return $status
}
merge_cmd () {
status=1
return $status
}
translate_merge_tool_path () {
echo "$1"
}
. "$MERGE_TOOLS_DIR/vimdiff"
. "$MERGE_TOOLS_DIR/vimdiff"
. "$MERGE_TOOLS_DIR/vimdiff"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment