filemerge: add a hacktastic version of internal:merge3 for merge diffs
This is a version of merge3 that always reports success, so that
conflict markers get preserved without us having to implement conflict
storage for in-memory merge. Credit to martinvonz for the idea. The
only planned consumer of this "merge tool" is my upcoming merge-diffs
functionality, though I suspect it could be useful in other ways.
Differential Revision: https://phab.mercurial-scm.org/D8515
--- a/mercurial/filemerge.py Thu May 28 17:31:41 2020 -0400
+++ b/mercurial/filemerge.py Mon May 11 18:45:45 2020 -0400
@@ -538,6 +538,25 @@
@internaltool(
+ b'merge3-lie-about-conflicts',
+ fullmerge,
+ b'',
+ precheck=_mergecheck,
+)
+def _imerge3alwaysgood(*args, **kwargs):
+ # Like merge3, but record conflicts as resolved with markers in place.
+ #
+ # This is used for `hg diff --merge` to show the differences between
+ # the auto-merge state and the committed merge state. It may be
+ # useful for other things.
+ b1, junk, b2 = _imerge3(*args, **kwargs)
+ # TODO is this right? I'm not sure what these return values mean,
+ # but as far as I can tell this will indicate to callers tha the
+ # merge succeeded.
+ return b1, False, b2
+
+
+@internaltool(
b'mergediff',
fullmerge,
_(