Commits

Jason Pellerin  committed 6d07571

emacs/ediff merge tool

  • Participants
  • Parent commits 3aaa420

Comments (0)

Files changed (2)

+[merge-tools]
+emacs_merge.binary=False
+emacs_merge.executable=/Users/jhp/bin/emacs_merge
+#!/bin/sh
+
+set -e # bail out quickly on failure
+   
+LOCAL="$1"
+BASE="$2"
+OTHER="$3"
+
+BACKUP="$LOCAL.orig"
+   
+Restore ()
+{
+    cp "$BACKUP" "$LOCAL" 
+}
+
+ExitOK ()
+{
+    rm "$LOCAL.other"
+    exit $?
+}
+
+echo "$LOCAL $BASE OTHER"
+
+# Back up our file & other file
+cp "$LOCAL" "$BACKUP"
+cp "$OTHER" "$LOCAL.other"
+
+# Attempt to do a non-interactive merge
+if which merge > /dev/null 2>&1 ; then
+    if merge "$LOCAL" "$BASE" "$OTHER" 2> /dev/null; then
+           # success!
+        ExitOK 
+    fi
+    Restore
+elif which diff3 > /dev/null 2>&1 ; then
+    if diff3 -m "$BACKUP" "$BASE" "$OTHER" > "$LOCAL" ; then
+           # success
+        ExitOK
+    fi
+    Restore
+fi
+
+if emacsclient --eval "(ediff-merge-with-ancestor \"$BACKUP\" \"$OTHER\" \"$BASE\" nil \"$LOCAL\")" 
+      then       
+       ExitOK
+   fi
+
+echo "emacs_merge: failed to merge files"
+exit 1