Mercurial > public > mercurial-scm > hg-stable
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 + +