diff hgmerge @ 240:737c66b68290

Replace tkmerge with hgmerge -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Replace tkmerge with hgmerge hgmerge attempts to find and use merge, kdiff3, tkmerge, and diff+patch. hg will use hgmerge unless overridden with HGMERGE manifest hash: 9137a620df4b235e66343b0fd0dba87fe631546e -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCoRGrywK+sNU5EO8RAi2VAJ9bh97ChGJymP/p8rvCuyNAMnk1bQCgrIGP vYI6qlyWKQZ01ObUTAIg92o= =+mRH -----END PGP SIGNATURE-----
author mpm@selenic.com
date Fri, 03 Jun 2005 18:27:55 -0800
parents
children a2edb4481f19
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hgmerge	Fri Jun 03 18:27:55 2005 -0800
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+# hgmerge - default merge helper for Mercurial
+#
+# This tries to find a way to do three-way merge on the current system.
+# The result ought to end up in $1.
+
+set -e # bail out quickly on failure
+
+LOCAL=$1
+BASE=$2
+OTHER=$3
+
+# Back up our file
+cp $LOCAL $LOCAL.orig
+
+# Attempt to do a non-interactive merge
+if which merge > /dev/null ; then
+    if merge $LOCAL $BASE $OTHER 2> /dev/null; then
+	# success!
+	exit 0
+    fi
+    cp $LOCAL.orig $LOCAL
+fi
+
+# try using kdiff3, which is fairly nice
+if which kdiff3 > /dev/null ; then
+    if kdiff3 --auto $BASE $LOCAL $OTHER -o $LOCAL ; then
+	exit 0
+    else
+	exit 1
+    fi
+fi
+
+# try using tkdiff, which is a bit less sophisticated
+if which tkdiff > /dev/null ; then
+    if tkdiff $LOCAL $OTHER -a $BASE -o $LOCAL ; then
+	exit 0
+    else
+	exit 1
+    fi
+fi
+
+# Attempt to do a merge with $EDITOR
+if which merge > /dev/null ; then
+    echo "conflicts detected in $LOCAL"
+    merge $LOCAL $BASE $OTHER 2>/dev/null || $EDITOR $LOCAL
+fi
+
+# attempt to manually merge with diff and patch
+if which diff > /dev/null ; then
+    if which patch > /dev/null ; then
+	T=`mktemp`
+	diff -u $BASE $OTHER > $T
+	if patch $LOCAL < $T ; then
+	    exit 0
+	else
+	    $EDITOR $LOCAL $LOCAL.rej
+	fi
+	rm $T
+	exit 1
+    fi
+fi
+
+echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!"
+exit 1
+
+