Code

[PATCH] git-mergetool: Allow gvimdiff to be used as a mergetool
authorDan McGee <dpmcgee@gmail.com>
Wed, 6 Jun 2007 01:19:47 +0000 (21:19 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 10 Jun 2007 12:27:29 +0000 (08:27 -0400)
Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: "Theodore Ts'o" <tytso@mit.edu>
Documentation/config.txt
Documentation/git-mergetool.txt
git-mergetool.sh

index de408b6571c38c508c42a96d9d622226e401258e..a2057d9d24432c6092fa875454f2ebdd6b5dec89 100644 (file)
@@ -531,7 +531,7 @@ merge.summary::
 merge.tool::
        Controls which merge resolution program is used by
        gitlink:git-mergetool[l].  Valid values are: "kdiff3", "tkdiff",
-       "meld", "xxdiff", "emerge", "vimdiff", and "opendiff"
+       "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff", and "opendiff".
 
 merge.verbosity::
        Controls the amount of output shown by the recursive merge
index b89c51c65b78e38c99a29f8e0b330039d1421ec2..6c32c6d18ead2047ce590e2853bbc1a5a2dd1e7c 100644 (file)
@@ -25,7 +25,7 @@ OPTIONS
 -t or --tool=<tool>::
        Use the merge resolution program specified by <tool>.
        Valid merge tools are:
-       kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, and opendiff
+       kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, and opendiff
 +
 If a merge resolution program is not specified, 'git mergetool'
 will use the configuration variable merge.tool.  If the
index bb21b037d65f5a63ba461647b449c9390cb1488f..c9a90cd69e3d0261ffb3cade6531d91a56a6dbdd 100755 (executable)
@@ -215,6 +215,12 @@ merge_file () {
            check_unchanged
            save_backup
            ;;
+       gvimdiff)
+               touch "$BACKUP"
+               gvimdiff -f -- "$LOCAL" "$path" "$REMOTE"
+               check_unchanged
+               save_backup
+               ;;
        xxdiff)
            touch "$BACKUP"
            if base_present ; then
@@ -293,7 +299,7 @@ done
 if test -z "$merge_tool"; then
     merge_tool=`git-config merge.tool`
     case "$merge_tool" in
-       kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | "")
+       kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | "")
            ;; # happy
        *)
            echo >&2 "git config option merge.tool set to unknown tool: $merge_tool"
@@ -312,6 +318,8 @@ if test -z "$merge_tool" ; then
        merge_tool=xxdiff
     elif type meld >/dev/null 2>&1 && test -n "$DISPLAY"; then
        merge_tool=meld
+    elif type gvimdiff >/dev/null 2>&1 && test -n "$DISPLAY"; then
+       merge_tool=gvimdiff
     elif type opendiff >/dev/null 2>&1; then
        merge_tool=opendiff
     elif type emacs >/dev/null 2>&1; then
@@ -325,7 +333,7 @@ if test -z "$merge_tool" ; then
 fi
 
 case "$merge_tool" in
-    kdiff3|tkdiff|meld|xxdiff|vimdiff|opendiff)
+    kdiff3|tkdiff|meld|xxdiff|vimdiff|gvimdiff|opendiff)
        if ! type "$merge_tool" > /dev/null 2>&1; then
            echo "The merge tool $merge_tool is not available"
            exit 1