diff mercurial/filemerge.py @ 48755:6ae3c97a0919

simplemerge: move printing of merge result to extension The `mercurial.simplemerge` module still has some command-lines processing that doesn't belong in such a low-level module. This patch moves the handling of `hg simplemerge --print` to the extension by having `mercurial.simplemerge.simplemerge()` return the merged text. Differential Revision: https://phab.mercurial-scm.org/D12148
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 14 Jan 2022 08:17:13 -0800
parents d9af7c1fb619
children 86e4b86df932
line wrap: on
line diff
--- a/mercurial/filemerge.py	Thu Feb 10 15:48:01 2022 -0800
+++ b/mercurial/filemerge.py	Fri Jan 14 08:17:13 2022 -0800
@@ -442,10 +442,13 @@
             stringutil.binary(input.text()) for input in (local, base, other)
         ):
             return 1  # continue merging
-        r = simplemerge.simplemerge(
-            ui, local, base, other, quiet=True, mode=mode
+        merged_text, conflicts = simplemerge.simplemerge(
+            ui, local, base, other, mode=mode
         )
-        if not r:
+        # fcd.flags() already has the merged flags (done in
+        # mergestate.resolve())
+        local.fctx.write(merged_text, local.fctx.flags())
+        if not conflicts:
             ui.debug(b" premerge successful\n")
             return 0
         if premerge not in validkeep:
@@ -489,8 +492,14 @@
         _verifytext(other, ui)
     except error.Abort:
         return True, True, False
-    r = simplemerge.simplemerge(ui, local, base, other, mode=mode)
-    return True, r, False
+    else:
+        merged_text, conflicts = simplemerge.simplemerge(
+            ui, local, base, other, mode=mode
+        )
+        # fcd.flags() already has the merged flags (done in
+        # mergestate.resolve())
+        local.fctx.write(merged_text, local.fctx.flags())
+        return True, conflicts, False
 
 
 @internaltool(