Signed-off-by: Arjen Laarhoven <arjen@xxxxxxxx> --- git-mergetool.sh | 30 ++++++++++++++++++++++++++++-- 1 files changed, 28 insertions(+), 2 deletions(-) diff --git a/git-mergetool.sh b/git-mergetool.sh index 7942fd0..58ae201 100755 --- a/git-mergetool.sh +++ b/git-mergetool.sh @@ -248,6 +248,30 @@ merge_file () { mv -- "$BACKUP" "$path.orig" fi ;; + opendiff) + touch "$BACKUP" + if base_present; then + opendiff $LOCAL $REMOTE -ancestor $BASE -merge $path | cat + else + opendiff $LOCAL $REMOTE -merge $path | cat + fi + if test "$path" -nt "$BACKUP" ; then + status=0; + else + while true; do + echo "$path seems unchanged." + echo -n "Was the merge successful? [y/n] " + read answer < /dev/tty + case "$answer" in + y*|Y*) status=0; break ;; + n*|N*) status=1; break ;; + esac + done + fi + if test "$status" -eq 0; then + mv -- "$BACKUP" "$path.orig" + fi + ;; esac if test "$status" -ne 0; then echo "merge of $path failed" 1>&2 @@ -289,7 +313,7 @@ done if test -z "$merge_tool"; then merge_tool=`git-config merge.tool` case "$merge_tool" in - kdiff3 | tkdiff | xxdiff | meld | emerge | vimdiff) + kdiff3 | tkdiff | xxdiff | meld | emerge | vimdiff | opendiff) ;; # happy *) echo >&2 "git config option merge.tool set to unknown tool: $merge_tool" @@ -312,6 +336,8 @@ if test -z "$merge_tool" ; then merge_tool=emerge elif type vimdiff >/dev/null 2>&1; then merge_tool=vimdiff + elif type opendiff >/dev/null 2>&1; then + merge_tool=opendiff else echo "No available merge resolution programs available." exit 1 @@ -319,7 +345,7 @@ if test -z "$merge_tool" ; then fi case "$merge_tool" in - kdiff3|tkdiff|meld|xxdiff|vimdiff) + kdiff3|tkdiff|meld|xxdiff|vimdiff|opendiff) if ! type "$merge_tool" > /dev/null 2>&1; then echo "The merge tool $merge_tool is not available" exit 1 -- 1.5.1.rc1.13.g0872 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html