Mercurial > hg
changeset 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 | 75840796e8e2 |
children | afe895fcc0d0 |
files | README hgmerge mercurial/hg.py setup.py |
diffstat | 5 files changed, 71 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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)