[Updated] D11980: simplemerge: make minimize() a free function

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Mon Jan 17 13:15:56 UTC 2022


Closed by commit rHGa0cb162369ce: simplemerge: make minimize() a free function (authored by martinvonz).
This revision was automatically updated to reflect the committed changes.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D11980?vs=31635&id=31674

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D11980/new/

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

AFFECTED FILES
  mercurial/simplemerge.py

CHANGE DETAILS

diff --git a/mercurial/simplemerge.py b/mercurial/simplemerge.py
--- a/mercurial/simplemerge.py
+++ b/mercurial/simplemerge.py
@@ -214,50 +214,6 @@
                 ia = aend
                 ib = bend
 
-    def minimize(self, merge_groups):
-        """Trim conflict regions of lines where A and B sides match.
-
-        Lines where both A and B have made the same changes at the beginning
-        or the end of each merge region are eliminated from the conflict
-        region and are instead considered the same.
-        """
-        for what, lines in merge_groups:
-            if what != b"conflict":
-                yield what, lines
-                continue
-            base_lines, a_lines, b_lines = lines
-            alen = len(a_lines)
-            blen = len(b_lines)
-
-            # find matches at the front
-            ii = 0
-            while ii < alen and ii < blen and a_lines[ii] == b_lines[ii]:
-                ii += 1
-            startmatches = ii
-
-            # find matches at the end
-            ii = 0
-            while (
-                ii < alen and ii < blen and a_lines[-ii - 1] == b_lines[-ii - 1]
-            ):
-                ii += 1
-            endmatches = ii
-
-            if startmatches > 0:
-                yield b'same', a_lines[:startmatches]
-
-            yield (
-                b'conflict',
-                (
-                    base_lines,
-                    a_lines[startmatches : alen - endmatches],
-                    b_lines[startmatches : blen - endmatches],
-                ),
-            )
-
-            if endmatches > 0:
-                yield b'same', a_lines[alen - endmatches :]
-
     def find_sync_regions(self):
         """Return a list of sync regions, where both descendants match the base.
 
@@ -350,6 +306,49 @@
     return b'\n'
 
 
+def _minimize(merge_groups):
+    """Trim conflict regions of lines where A and B sides match.
+
+    Lines where both A and B have made the same changes at the beginning
+    or the end of each merge region are eliminated from the conflict
+    region and are instead considered the same.
+    """
+    for what, lines in merge_groups:
+        if what != b"conflict":
+            yield what, lines
+            continue
+        base_lines, a_lines, b_lines = lines
+        alen = len(a_lines)
+        blen = len(b_lines)
+
+        # find matches at the front
+        ii = 0
+        while ii < alen and ii < blen and a_lines[ii] == b_lines[ii]:
+            ii += 1
+        startmatches = ii
+
+        # find matches at the end
+        ii = 0
+        while ii < alen and ii < blen and a_lines[-ii - 1] == b_lines[-ii - 1]:
+            ii += 1
+        endmatches = ii
+
+        if startmatches > 0:
+            yield b'same', a_lines[:startmatches]
+
+        yield (
+            b'conflict',
+            (
+                base_lines,
+                a_lines[startmatches : alen - endmatches],
+                b_lines[startmatches : blen - endmatches],
+            ),
+        )
+
+        if endmatches > 0:
+            yield b'same', a_lines[alen - endmatches :]
+
+
 def render_minimized(
     m3,
     name_a=None,
@@ -366,7 +365,7 @@
     if name_b:
         end_marker = end_marker + b' ' + name_b
     merge_groups = m3.merge_groups()
-    merge_groups = m3.minimize(merge_groups)
+    merge_groups = _minimize(merge_groups)
     lines = []
     for what, group_lines in merge_groups:
         if what == b'conflict':



To: martinvonz, #hg-reviewers, Alphare
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20220117/7c69e922/attachment-0002.html>


More information about the Mercurial-patches mailing list