git-mergetool: add new merge tool TortoiseMerge
authorMarkus Heidelberg <markus.heidelberg@web.de>
Mon, 6 Apr 2009 08:31:18 +0000 (01:31 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 8 Apr 2009 05:19:55 +0000 (22:19 -0700)
TortoiseMerge comes with TortoiseSVN or TortoiseGit for Windows. It can
only be used as a merge tool with an existing base file. It cannot be
used without a base nor as a diff tool.

The documentation only mentions the slash '/' as command line option
prefix, which refused to work, but the parser also accepts the dash '-'

See http://code.google.com/p/msysgit/issues/detail?id=226

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-mergetool.txt
Documentation/merge-config.txt
git-mergetool.sh

index 5d3c6328726ba1af829026dd97840fc43335cfe0..5edac4d267bdc33fd958b1e84a3768433fbfe58d 100644 (file)
@@ -26,7 +26,8 @@ OPTIONS
 --tool=<tool>::
        Use the merge resolution program specified by <tool>.
        Valid merge tools are:
-       kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, and opendiff
+       kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
+       tortoisemerge and opendiff
 +
 If a merge resolution program is not specified, 'git-mergetool'
 will use the configuration variable `merge.tool`.  If the
index 9c44af8e4aa7a00858484932f07c1453e9cca1cc..8c10f66702022b460a7c3ada8daa83f51b1f1e90 100644 (file)
@@ -23,7 +23,7 @@ merge.tool::
        Controls which merge resolution program is used by
        linkgit:git-mergetool[1].  Valid built-in values are: "kdiff3",
        "tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff",
-       "ecmerge" and
+       "ecmerge", tortoisemerge and
        "opendiff".  Any other value is treated is custom merge tool
        and there must be a corresponding mergetool.<tool>.cmd option.
 
index 6e611e94a467ba3b3e1f56624807e231e865bce7..be9717a2f10577c8cb83dc124bda4e6169ee39e9 100755 (executable)
@@ -265,6 +265,16 @@ merge_file () {
            fi
            status=$?
            ;;
+       tortoisemerge)
+           if base_present ; then
+               touch "$BACKUP"
+               "$merge_tool_path" -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"
+               check_unchanged
+           else
+               echo "TortoiseMerge cannot be used without a base" 1>&2
+               status=1
+           fi
+           ;;
        *)
            if test -n "$merge_tool_cmd"; then
                if test "$merge_tool_trust_exit_code" = "false"; then
@@ -345,7 +355,7 @@ valid_custom_tool()
 
 valid_tool() {
        case "$1" in
-               kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge)
+               kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge | tortoisemerge)
                        ;; # happy
                *)
                        if ! valid_custom_tool "$1"; then
@@ -404,9 +414,9 @@ fi
 if test -z "$merge_tool" ; then
     if test -n "$DISPLAY"; then
         if test -n "$GNOME_DESKTOP_SESSION_ID" ; then
-            merge_tool_candidates="meld kdiff3 tkdiff xxdiff gvimdiff"
+            merge_tool_candidates="meld kdiff3 tkdiff xxdiff tortoisemerge gvimdiff"
         else
-            merge_tool_candidates="kdiff3 tkdiff xxdiff meld gvimdiff"
+            merge_tool_candidates="kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff"
         fi
     fi
     if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then