# HG changeset patch # User David Champion # Date 1271869065 18000 # Node ID 523330d567cfe5d0222d2d64d95c4a9b71a88e92 # Parent 06586648eeec7aea123aa74d003ed14ed2891a43 merge: tool.premerge=keep will leave premerge markers in $local diff -r 06586648eeec -r 523330d567cf doc/hgrc.5.txt --- a/doc/hgrc.5.txt Tue May 11 20:22:37 2010 +0200 +++ 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 06586648eeec -r 523330d567cf mercurial/filemerge.py --- a/mercurial/filemerge.py Tue May 11 20:22:37 2010 +0200 +++ 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),