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 <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
62957bea0c
commit
073678b8e6
@ -1,5 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# git-mergetool--lib is a library for common merge tool functions
|
# git-mergetool--lib is a library for common merge tool functions
|
||||||
|
MERGE_TOOLS_DIR=$(git --exec-path)/mergetools
|
||||||
|
|
||||||
diff_mode() {
|
diff_mode() {
|
||||||
test "$TOOL_MODE" = diff
|
test "$TOOL_MODE" = diff
|
||||||
}
|
}
|
||||||
@ -44,19 +46,32 @@ valid_tool () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setup_tool () {
|
setup_tool () {
|
||||||
case "$1" in
|
tool="$1"
|
||||||
vim*|gvim*)
|
|
||||||
tool=vim
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
tool="$1"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
mergetools="$(git --exec-path)/mergetools"
|
|
||||||
|
|
||||||
# Load the default definitions
|
# Fallback definitions, to be overriden by tools.
|
||||||
. "$mergetools/defaults"
|
can_merge () {
|
||||||
if ! test -f "$mergetools/$tool"
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
can_diff () {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
diff_cmd () {
|
||||||
|
status=1
|
||||||
|
return $status
|
||||||
|
}
|
||||||
|
|
||||||
|
merge_cmd () {
|
||||||
|
status=1
|
||||||
|
return $status
|
||||||
|
}
|
||||||
|
|
||||||
|
translate_merge_tool_path () {
|
||||||
|
echo "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! test -f "$MERGE_TOOLS_DIR/$tool"
|
||||||
then
|
then
|
||||||
# Use a special return code for this case since we want to
|
# Use a special return code for this case since we want to
|
||||||
# source "defaults" even when an explicit tool path is
|
# source "defaults" even when an explicit tool path is
|
||||||
@ -66,7 +81,7 @@ setup_tool () {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Load the redefined functions
|
# Load the redefined functions
|
||||||
. "$mergetools/$tool"
|
. "$MERGE_TOOLS_DIR/$tool"
|
||||||
|
|
||||||
if merge_mode && ! can_merge
|
if merge_mode && ! can_merge
|
||||||
then
|
then
|
||||||
@ -194,24 +209,10 @@ list_merge_tool_candidates () {
|
|||||||
show_tool_help () {
|
show_tool_help () {
|
||||||
unavailable= available= LF='
|
unavailable= available= LF='
|
||||||
'
|
'
|
||||||
|
for i in "$MERGE_TOOLS_DIR"/*
|
||||||
scriptlets="$(git --exec-path)"/mergetools
|
|
||||||
for i in "$scriptlets"/*
|
|
||||||
do
|
do
|
||||||
. "$scriptlets"/defaults
|
tool=$(basename "$i")
|
||||||
. "$i"
|
setup_tool "$tool" 2>/dev/null || continue
|
||||||
|
|
||||||
tool="$(basename "$i")"
|
|
||||||
if test "$tool" = "defaults"
|
|
||||||
then
|
|
||||||
continue
|
|
||||||
elif merge_mode && ! can_merge
|
|
||||||
then
|
|
||||||
continue
|
|
||||||
elif diff_mode && ! can_diff
|
|
||||||
then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
merge_tool_path=$(translate_merge_tool_path "$tool")
|
merge_tool_path=$(translate_merge_tool_path "$tool")
|
||||||
if type "$merge_tool_path" >/dev/null 2>&1
|
if type "$merge_tool_path" >/dev/null 2>&1
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
# 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"
|
|
||||||
}
|
|
1
mergetools/gvimdiff
Normal file
1
mergetools/gvimdiff
Normal file
@ -0,0 +1 @@
|
|||||||
|
. "$MERGE_TOOLS_DIR/vimdiff"
|
1
mergetools/gvimdiff2
Normal file
1
mergetools/gvimdiff2
Normal file
@ -0,0 +1 @@
|
|||||||
|
. "$MERGE_TOOLS_DIR/vimdiff"
|
1
mergetools/vimdiff2
Normal file
1
mergetools/vimdiff2
Normal file
@ -0,0 +1 @@
|
|||||||
|
. "$MERGE_TOOLS_DIR/vimdiff"
|
Loading…
Reference in New Issue
Block a user