Code

mergetool--lib: Add Beyond Compare 3 as a tool
authorSebastian Schuberth <sschuberth@gmail.com>
Sun, 27 Feb 2011 11:32:46 +0000 (12:32 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 28 Feb 2011 20:42:38 +0000 (12:42 -0800)
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Tested-by: Chris Packham <judge.packham@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-difftool.txt
Documentation/git-mergetool.txt
Documentation/merge-config.txt
contrib/completion/git-completion.bash
git-mergetool--lib.sh

index 4c8825d19347cc895a9c9764cd60a111b1ad5f56..f087eff8763288d298f0d58ee24e3f2f07003b3a 100644 (file)
@@ -31,7 +31,7 @@ OPTIONS
 --tool=<tool>::
        Use the diff tool specified by <tool>.
        Valid merge tools are:
-       araxis, diffuse, emerge, ecmerge, gvimdiff, kdiff3,
+       araxis, bc3, diffuse, emerge, ecmerge, gvimdiff, kdiff3,
        kompare, meld, opendiff, p4merge, tkdiff, vimdiff and xxdiff.
 +
 If a diff tool is not specified, 'git difftool'
index 4987245aca2877f233ab26f2cf244430b2da8211..740b3f1e670552d3331bb2de2754c46c68be222a 100644 (file)
@@ -26,7 +26,7 @@ OPTIONS
 --tool=<tool>::
        Use the merge resolution program specified by <tool>.
        Valid merge tools are:
-       araxis, diffuse, ecmerge, emerge, gvimdiff, kdiff3,
+       araxis, bc3, diffuse, ecmerge, emerge, gvimdiff, kdiff3,
        meld, opendiff, p4merge, tkdiff, tortoisemerge, vimdiff and xxdiff.
 +
 If a merge resolution program is not specified, 'git mergetool'
index 90587db169870c682e747440b507273152e1e348..33bf74c334ead9ee5e44d81d15d544b0625f2894 100644 (file)
@@ -34,7 +34,7 @@ merge.stat::
 merge.tool::
        Controls which merge resolution program is used by
        linkgit:git-mergetool[1].  Valid built-in values are: "araxis",
-       "diffuse", "ecmerge", "emerge", "gvimdiff", "kdiff3", "meld",
+       "bc3", "diffuse", "ecmerge", "emerge", "gvimdiff", "kdiff3", "meld",
        "opendiff", "p4merge", "tkdiff", "tortoisemerge", "vimdiff"
        and "xxdiff".  Any other value is treated is custom merge tool
        and there must be a corresponding mergetool.<tool>.cmd option.
index 893b7716cafa4811d237480a980140d308aa20dc..058c2a92b823e420d0cffd23bdcde49d08d7bb0e 100755 (executable)
@@ -1358,7 +1358,7 @@ _git_diff ()
 }
 
 __git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
-                       tkdiff vimdiff gvimdiff xxdiff araxis p4merge
+                       tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3
 "
 
 _git_difftool ()
index efca09f51f58f289815402bfe84b04e12149904b..eeefb9c29946fc748e6278d571e7c07e67e144bc 100644 (file)
@@ -13,6 +13,9 @@ translate_merge_tool_path () {
        araxis)
                echo compare
                ;;
+       bc3)
+               echo bcompare
+               ;;
        emerge)
                echo emacs
                ;;
@@ -46,7 +49,7 @@ check_unchanged () {
 
 valid_tool () {
        case "$1" in
-       araxis | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \
+       araxis | bc3 | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \
        kdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | vimdiff2 | xxdiff)
                ;; # happy
        kompare)
@@ -106,6 +109,21 @@ run_merge_tool () {
                                >/dev/null 2>&1
                fi
                ;;
+       bc3)
+               if merge_mode; then
+                       touch "$BACKUP"
+                       if $base_present; then
+                               "$merge_tool_path" "$LOCAL" "$REMOTE" "$BASE" \
+                                       -mergeoutput="$MERGED"
+                       else
+                               "$merge_tool_path" "$LOCAL" "$REMOTE" \
+                                       -mergeoutput="$MERGED"
+                       fi
+                       check_unchanged
+               else
+                       "$merge_tool_path" "$LOCAL" "$REMOTE"
+               fi
+               ;;
        diffuse)
                if merge_mode; then
                        touch "$BACKUP"
@@ -342,7 +360,7 @@ guess_merge_tool () {
                else
                        tools="opendiff kdiff3 tkdiff xxdiff meld $tools"
                fi
-               tools="$tools gvimdiff diffuse ecmerge p4merge araxis"
+               tools="$tools gvimdiff diffuse ecmerge p4merge araxis bc3"
        fi
        case "${VISUAL:-$EDITOR}" in
        *vim*)