# HG changeset patch # User Pierre-Yves David # Date 1407195161 25200 # Node ID d7f25834ffbb4bbf41a019d596ce433de8e4c5a7 # Parent b36c60cfe46f9db4d1237ac94a93f80562e1a800 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. diff -r b36c60cfe46f -r d7f25834ffbb mercurial/filemerge.py --- 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") diff -r b36c60cfe46f -r d7f25834ffbb mercurial/help/config.txt --- 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`` diff -r b36c60cfe46f -r d7f25834ffbb tests/test-merge-tools.t --- 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