Mercurial > hg > mercurial-crew-with-dirclash
view hgmerge @ 596:9a8daeff0ffa
A bunch of parsing/help updates
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
A bunch of parsing/help updates
more explanation of how to get non-basic commands
shorten names of debug functions and add docstrings
add undo long docstring
promote anotate, export, and revert
make the global opts array global
refactor parsing
kill two unused arguments to fancyopts
update test-help
manifest hash: 459ae2273aaf54f71b4576677a681dc53ab2908c
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyEDhywK+sNU5EO8RAr0DAJ9LTu8Fc2quLRtuwLPTQzWqlOJWKwCbBpZk
pnMkYnshsutVYljcil1P46I=
=Sleg
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Sun, 03 Jul 2005 11:47:45 -0800 |
parents | 4fc63e22b1fe |
children | cd0ad12d9e42 8f5637f0a0c0 0902ffece4b4 |
line wrap: on
line source
#!/bin/sh # # 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 EDITOR="${EDITOR:-vi}" # 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 elif which diff3 > /dev/null ; then if diff3 -m $LOCAL.orig $BASE $OTHER > $LOCAL ; then # success exit 0 fi cp $LOCAL.orig $LOCAL fi if [ -n "$DISPLAY" ]; then # 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 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 exit 0 fi if which diff3 > /dev/null ; then echo "conflicts detected in $LOCAL" diff3 -m $LOCAL.orig $BASE $OTHER > $LOCAL || $EDITOR $LOCAL exit 0 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