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-----
--- a/README Fri Jun 03 13:44:34 2005 -0800
+++ b/README Fri Jun 03 18:27:55 2005 -0800
@@ -19,10 +19,6 @@
$ export PYTHONPATH=${HOME}/lib/python # add this to your .bashrc
$ export PATH=${HOME}/bin:$PATH #
- You'll also need to set up a tool to handle three-way merges:
-
- $ export HGMERGE=tkmerge # customize this
-
And finally:
$ hg # test installation, show help
--- /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
+
+
--- a/mercurial/hg.py Fri Jun 03 13:44:34 2005 -0800
+++ b/mercurial/hg.py Fri Jun 03 18:27:55 2005 -0800
@@ -981,8 +981,8 @@
self.ui.debug("file %s: other %s ancestor %s\n" %
(fn, short(other), short(base)))
- cmd = os.environ["HGMERGE"]
- r = os.system("%s %s %s %s %s" % (cmd, a, b, c, fn))
+ cmd = os.environ.get("HGMERGE", "hgmerge")
+ r = os.system("%s %s %s %s" % (cmd, a, b, c))
if r:
self.ui.warn("merging %s failed!\n" % f)
--- a/setup.py Fri Jun 03 13:44:34 2005 -0800
+++ b/setup.py Fri Jun 03 18:27:55 2005 -0800
@@ -29,4 +29,4 @@
glob.glob('templates/map-*') +
glob.glob('templates/*.tmpl'))],
cmdclass = { 'install_data' : install_package_data },
- scripts=['hg'])
+ scripts=['hg', 'hgmerge'])
--- a/tkmerge Fri Jun 03 13:44:34 2005 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-merge $1 $3 $2 || tkdiff -conflict $1 -o $1
-