mercurial/simplemerge.py
changeset 48563 ad0c6bf6f02e
parent 48562 12ac4401ff7d
child 48564 c2537aec3bb6
--- a/mercurial/simplemerge.py	Tue Jan 11 21:56:27 2022 -0800
+++ b/mercurial/simplemerge.py	Tue Jan 11 22:03:55 2022 -0800
@@ -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':