Browse Source

git-mergetool: add new merge tool TortoiseMerge

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>
maint
Markus Heidelberg 16 years ago committed by Junio C Hamano
parent
commit
b98c212a9f
  1. 3
      Documentation/git-mergetool.txt
  2. 2
      Documentation/merge-config.txt
  3. 16
      git-mergetool.sh

3
Documentation/git-mergetool.txt

@ -26,7 +26,8 @@ OPTIONS
--tool=<tool>:: --tool=<tool>::
Use the merge resolution program specified by <tool>. Use the merge resolution program specified by <tool>.
Valid merge tools are: 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' If a merge resolution program is not specified, 'git-mergetool'
will use the configuration variable `merge.tool`. If the will use the configuration variable `merge.tool`. If the

2
Documentation/merge-config.txt

@ -23,7 +23,7 @@ merge.tool::
Controls which merge resolution program is used by Controls which merge resolution program is used by
linkgit:git-mergetool[1]. Valid built-in values are: "kdiff3", linkgit:git-mergetool[1]. Valid built-in values are: "kdiff3",
"tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff", "tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff",
"ecmerge" and "ecmerge", tortoisemerge and
"opendiff". Any other value is treated is custom merge tool "opendiff". Any other value is treated is custom merge tool
and there must be a corresponding mergetool.<tool>.cmd option. and there must be a corresponding mergetool.<tool>.cmd option.



16
git-mergetool.sh

@ -265,6 +265,16 @@ merge_file () {
fi fi
status=$? 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 -n "$merge_tool_cmd"; then
if test "$merge_tool_trust_exit_code" = "false"; then if test "$merge_tool_trust_exit_code" = "false"; then
@ -345,7 +355,7 @@ valid_custom_tool()


valid_tool() { valid_tool() {
case "$1" in case "$1" in
kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge) kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge | tortoisemerge)
;; # happy ;; # happy
*) *)
if ! valid_custom_tool "$1"; then if ! valid_custom_tool "$1"; then
@ -404,9 +414,9 @@ fi
if test -z "$merge_tool" ; then if test -z "$merge_tool" ; then
if test -n "$DISPLAY"; then if test -n "$DISPLAY"; then
if test -n "$GNOME_DESKTOP_SESSION_ID" ; 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 else
merge_tool_candidates="kdiff3 tkdiff xxdiff meld gvimdiff" merge_tool_candidates="kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff"
fi fi
fi fi
if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then

Loading…
Cancel
Save