changeset 241:afe895fcc0d0

Resolve bits from TAH -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Resolve bits from TAH manifest hash: dc639d419de857b22da9f707cbb557c328eb12f5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCoRIaywK+sNU5EO8RAswQAKCiEcQ5RV3C2JZXgQBch28VO3NpSgCdEzcD Td8bV8IKVUIXtvrcy1rCZTY= =tAU7 -----END PGP SIGNATURE-----
author mpm@selenic.com
date Fri, 03 Jun 2005 18:29:46 -0800
parents 737c66b68290 (diff) 4f802588cdfb (current diff)
children a2edb4481f19
files README hg mercurial/commands.py mercurial/hg.py mercurial/hgweb.py mercurial/mdiff.py mercurial/revlog.py mercurial/ui.py setup.py templates/changelogentry.tmpl templates/fileannotate.tmpl templates/filelogentry.tmpl templates/map
diffstat 7 files changed, 81 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/README
+++ b/README
@@ -19,10 +19,6 @@ Setting up Mercurial:
  $ 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
new file mode 100644
--- /dev/null
+++ b/hgmerge
@@ -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
+++ b/mercurial/hg.py
@@ -981,8 +981,8 @@ class localrepository:
         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/mercurial/hgweb.py
+++ b/mercurial/hgweb.py
@@ -1,7 +1,7 @@
-#!/usr/bin/env python
+# hgweb.py - web interface to a mercurial repository
 #
-# hgweb.py - 0.2 - 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
-#    - web interface to a mercurial repository
+# Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
+# Copyright 2005 Matt Mackall <mpm@selenic.com> 
 #
 # This software may be used and distributed according to the terms
 # of the GNU General Public License, incorporated herein by reference.
--- a/mercurial/mdiff.py
+++ b/mercurial/mdiff.py
@@ -1,4 +1,10 @@
-#!/usr/bin/python
+# mdiff.py - diff and patch routines for mercurial
+#
+# Copyright 2005 Matt Mackall <mpm@selenic.com>
+#
+# This software may be used and distributed according to the terms
+# of the GNU General Public License, incorporated herein by reference.
+
 import difflib, struct, mmap
 from mercurial.mpatch import *
 
--- a/setup.py
+++ b/setup.py
@@ -29,4 +29,4 @@ setup(name='mercurial',
                    glob.glob('templates/map-*') +
                    glob.glob('templates/*.tmpl'))], 
       cmdclass = { 'install_data' : install_package_data },
-      scripts=['hg'])
+      scripts=['hg', 'hgmerge'])
deleted file mode 100644
--- a/tkmerge
+++ /dev/null
@@ -1,2 +0,0 @@
-merge $1 $3 $2 || tkdiff -conflict $1 -o $1
-