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.

Make common functions available in $MERGE_TOOLS_DIR/include/.

Signed-off-by: David Aguilar <dav...@gmail.com>
---
This should make things ok on platforms where we don't have symlinks.

 Makefile                                     |  2 +-
 git-mergetool--lib.sh                        | 41 +++++++++++-----------------
 mergetools/gvimdiff                          |  1 +
 mergetools/gvimdiff2                         |  1 +
 mergetools/{defaults => include/defaults.sh} |  0
 mergetools/{vim => include/vim.sh}           |  0
 mergetools/vimdiff                           |  1 +
 mergetools/vimdiff2                          |  1 +
 8 files changed, 21 insertions(+), 26 deletions(-)
 create mode 100644 mergetools/gvimdiff
 create mode 100644 mergetools/gvimdiff2
 rename mergetools/{defaults => include/defaults.sh} (100%)
 rename mergetools/{vim => include/vim.sh} (100%)
 create mode 100644 mergetools/vimdiff
 create mode 100644 mergetools/vimdiff2

diff --git a/Makefile b/Makefile
index f69979e..3bc6eb5 100644
--- a/Makefile
+++ b/Makefile
@@ -2724,7 +2724,7 @@ install: all
        $(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)'
        $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
        $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
-       $(INSTALL) -m 644 mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
+       cp -R mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
 ifndef NO_GETTEXT
        $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(localedir_SQ)'
        (cd po/build/locale && $(TAR) cf - .) | \
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index aa38bd1..c866ed8 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -1,5 +1,7 @@
 #!/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,25 +46,14 @@ valid_tool () {
 }
 
 setup_tool () {
-       case "$1" in
-       vim*|gvim*)
-               tool=vim
-               ;;
-       *)
-               tool="$1"
-               ;;
-       esac
-       mergetools="$(git --exec-path)/mergetools"
+       tool="$1"
 
-       # Load the default definitions
-       . "$mergetools/defaults"
-       if ! test -f "$mergetools/$tool"
+       if ! test -f "$MERGE_TOOLS_DIR/$tool"
        then
                return 1
        fi
-
-       # Load the redefined functions
-       . "$mergetools/$tool"
+       . "$MERGE_TOOLS_DIR/include/defaults.sh"
+       . "$MERGE_TOOLS_DIR/$tool"
 
        if merge_mode && ! can_merge
        then
@@ -99,7 +90,7 @@ run_merge_tool () {
        base_present="$2"
        status=0
 
-       # Bring tool-specific functions into scope
+       # Bring tool specific functions into scope
        setup_tool "$1"
 
        if merge_mode
@@ -177,18 +168,17 @@ 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"
+               if test -d "$i"
                then
                        continue
-               elif merge_mode && ! can_merge
+               fi
+
+               . "$MERGE_TOOLS_DIR"/include/defaults.sh
+               . "$i"
+
+               if merge_mode && ! can_merge
                then
                        continue
                elif diff_mode && ! can_diff
@@ -196,6 +186,7 @@ show_tool_help () {
                        continue
                fi
 
+               tool=$(basename "$i")
                merge_tool_path=$(translate_merge_tool_path "$tool")
                if type "$merge_tool_path" >/dev/null 2>&1
                then
diff --git a/mergetools/gvimdiff b/mergetools/gvimdiff
new file mode 100644
index 0000000..f5890b1
--- /dev/null
+++ b/mergetools/gvimdiff
@@ -0,0 +1 @@
+. "$MERGE_TOOLS_DIR/include/vim.sh"
diff --git a/mergetools/gvimdiff2 b/mergetools/gvimdiff2
new file mode 100644
index 0000000..f5890b1
--- /dev/null
+++ b/mergetools/gvimdiff2
@@ -0,0 +1 @@
+. "$MERGE_TOOLS_DIR/include/vim.sh"
diff --git a/mergetools/defaults b/mergetools/include/defaults.sh
similarity index 100%
rename from mergetools/defaults
rename to mergetools/include/defaults.sh
diff --git a/mergetools/vim b/mergetools/include/vim.sh
similarity index 100%
rename from mergetools/vim
rename to mergetools/include/vim.sh
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
new file mode 100644
index 0000000..f5890b1
--- /dev/null
+++ b/mergetools/vimdiff
@@ -0,0 +1 @@
+. "$MERGE_TOOLS_DIR/include/vim.sh"
diff --git a/mergetools/vimdiff2 b/mergetools/vimdiff2
new file mode 100644
index 0000000..f5890b1
--- /dev/null
+++ b/mergetools/vimdiff2
@@ -0,0 +1 @@
+. "$MERGE_TOOLS_DIR/include/vim.sh"
-- 
1.8.0.6.ge6f188f.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to