merge-tools: add a `premerge=keep-merge3` config option
This value leaves premerge markers that includes the merge base too. This is a
the same as what `internal:merge3` would do.
--- a/mercurial/filemerge.py Mon Aug 04 16:58:39 2014 -0700
+++ b/mercurial/filemerge.py Mon Aug 04 16:32:41 2014 -0700
@@ -178,7 +178,7 @@
ui = repo.ui
- validkeep = ['keep']
+ validkeep = ['keep', 'keep-merge3']
# do we attempt to simplemerge first?
try:
@@ -192,6 +192,11 @@
(tool, premerge, _valid))
if premerge:
+ if premerge == 'keep-merge3':
+ if not labels:
+ labels = _defaultconflictlabels
+ if len(labels) < 3:
+ labels.append('base')
r = simplemerge.simplemerge(ui, a, b, c, quiet=True, label=labels)
if not r:
ui.debug(" premerge successful\n")
--- a/mercurial/help/config.txt Mon Aug 04 16:58:39 2014 -0700
+++ b/mercurial/help/config.txt Mon Aug 04 16:32:41 2014 -0700
@@ -954,8 +954,10 @@
``premerge``
Attempt to run internal non-interactive 3-way merge tool before
- launching external tool. Options are ``true``, ``false``, or ``keep``
- to leave markers in the file if the premerge fails.
+ launching external tool. Options are ``true``, ``false``, ``keep`` or
+ ``keep-merge3``. The ``keep`` option will leave markers in the file if the
+ premerge fails. The ``keep-merge3`` will do the same but include information
+ about the base of the merge in the marker (see internal:merge3).
Default: True
``binary``
--- a/tests/test-merge-tools.t Mon Aug 04 16:58:39 2014 -0700
+++ b/tests/test-merge-tools.t Mon Aug 04 16:32:41 2014 -0700
@@ -741,6 +741,44 @@
# hg stat
M f
+premerge=keep-merge3 keeps conflict markers with base content:
+
+ $ beforemerge
+ [merge-tools]
+ false.whatever=
+ true.priority=1
+ true.executable=cat
+ # hg update -C 1
+ $ hg merge -r 4 --config merge-tools.true.premerge=keep-merge3
+ merging f
+ <<<<<<< local: ef83787e2614 - test: revision 1
+ revision 1
+ space
+ ||||||| base
+ revision 0
+ space
+ =======
+ revision 4
+ >>>>>>> other: 81448d39c9a0 - test: revision 4
+ revision 0
+ space
+ revision 4
+ 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ aftermerge
+ # cat f
+ <<<<<<< local: ef83787e2614 - test: revision 1
+ revision 1
+ space
+ ||||||| base
+ revision 0
+ space
+ =======
+ revision 4
+ >>>>>>> other: 81448d39c9a0 - test: revision 4
+ # hg stat
+ M f
+
Tool execution