# HG changeset patch # User mpm@selenic.com # Date 1117852075 28800 # Node ID 737c66b682900d82aaca6aa0310c0defd42302af # Parent 75840796e8e22db31caaf94eea8827324b63dd32 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----- diff -r 75840796e8e2 -r 737c66b68290 README --- 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 diff -r 75840796e8e2 -r 737c66b68290 hgmerge --- /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 + + diff -r 75840796e8e2 -r 737c66b68290 mercurial/hg.py --- 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) diff -r 75840796e8e2 -r 737c66b68290 setup.py --- 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']) diff -r 75840796e8e2 -r 737c66b68290 tkmerge --- 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 -