[PATCH 1 of 5] merge: tool.premerge=keep will leave premerge markers in $local
David Champion
dgc at uchicago.edu
Mon May 10 11:48:18 CDT 2010
# HG changeset patch
# User David Champion <dgc at uchicago.edu>
# Date 1271869065 18000
# Node ID 40465b8544eca8607ab2d79070c3287e10293c59
# Parent 2114e44b08f64ab2913fbe3fbbea279b9997a632
merge: tool.premerge=keep will leave premerge markers in $local
diff -r 2114e44b08f6 -r 40465b8544ec doc/hgrc.5.txt
--- a/doc/hgrc.5.txt Fri May 07 16:59:00 2010 -0500
+++ b/doc/hgrc.5.txt Wed Apr 21 11:57:45 2010 -0500
@@ -454,7 +454,8 @@
Default: ``$local $base $other``
``premerge``
Attempt to run internal non-interactive 3-way merge tool before
- launching external tool.
+ launching external tool. Options are ``true``, ``false``, or ``keep``
+ to leave markers in the file if the premerge fails.
Default: True
``binary``
This tool can merge binary files. Defaults to False, unless tool
diff -r 2114e44b08f6 -r 40465b8544ec mercurial/filemerge.py
--- a/mercurial/filemerge.py Fri May 07 16:59:00 2010 -0500
+++ b/mercurial/filemerge.py Wed Apr 21 11:57:45 2010 -0500
@@ -7,7 +7,7 @@
from node import short
from i18n import _
-import util, simplemerge, match
+import util, simplemerge, match, error
import os, tempfile, re, filecmp
def _toolstr(ui, tool, part, default=""):
@@ -176,7 +176,18 @@
ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca))
# do we attempt to simplemerge first?
- if _toolbool(ui, tool, "premerge", not (binary or symlink)):
+ try:
+ premerge = _toolbool(ui, tool, "premerge", not (binary or symlink))
+ except error.ConfigError:
+ premerge = _toolstr(ui, tool, "premerge").lower()
+ valid = 'keep'.split()
+ if premerge not in valid:
+ _valid = ', '.join(["'" + v + "'" for v in valid])
+ raise error.ConfigError(_("%s.premerge not valid "
+ "('%s' is neither boolean nor %s)") %
+ (tool, premerge, _valid))
+
+ if premerge:
r = simplemerge.simplemerge(ui, a, b, c, quiet=True)
if not r:
ui.debug(" premerge successful\n")
@@ -184,7 +195,8 @@
os.unlink(b)
os.unlink(c)
return 0
- util.copyfile(back, a) # restore from backup and try again
+ if premerge != 'keep':
+ util.copyfile(back, a) # restore from backup and try again
env = dict(HG_FILE=fd,
HG_MY_NODE=short(mynode),
More information about the Mercurial-devel
mailing list