D12149: filemerge: when not keeping premerge, don't write markers to context

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Tue Feb 8 21:28:12 UTC 2022


martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  When premerge is enabled (as it is for non-binary inputs by default)
  and the markers are not kept, we currently still write it to the
  output context and then restore the previous content right after. With
  the refactoring in the previous patch, we can easily avoid that step
  and instead write the output in the opposite case (i.e. when it's
  successful or when the markers are supposed to be kept).

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D12149

AFFECTED FILES
  mercurial/filemerge.py

CHANGE DETAILS

diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -439,16 +439,15 @@
             merged_text, conflicts = simplemerge.simplemerge(
                 ui, local, base, other, mode=mode
             )
-            # fcd.flags() already has the merged flags (done in
-            # mergestate.resolve())
-            if merged_text is not None:
+            if merged_text is not None and (
+                not conflicts or premerge in validkeep
+            ):
+                # 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:
-            # restore from backup and try again
-            _restorebackup(local.fctx, backup)
     return 1  # continue merging
 
 
@@ -875,12 +874,6 @@
     }
 
 
-def _restorebackup(fcd, backup):
-    # TODO: Add a workingfilectx.write(otherfilectx) path so we can use
-    # util.copy here instead.
-    fcd.write(backup.data(), fcd.flags())
-
-
 def _makebackup(repo, ui, wctx, fcd):
     """Makes and returns a filectx-like object for ``fcd``'s backup file.
 



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list