mercurial/simplemerge.py
changeset 48556 ce8c82a5cd65
parent 48555 c91418480cb0
child 48557 c6649c53073f
--- a/mercurial/simplemerge.py	Tue Dec 14 13:12:56 2021 -0800
+++ b/mercurial/simplemerge.py	Fri Jan 07 18:42:31 2022 -0800
@@ -99,7 +99,7 @@
         minimize=False,
     ):
         """Return merge in cvs-like form."""
-        self.conflicts = False
+        conflicts = False
         newline = b'\n'
         if len(self.a) > 0:
             if self.a[0].endswith(b'\r\n'):
@@ -115,27 +115,25 @@
         merge_groups = self.merge_groups()
         if minimize:
             merge_groups = self.minimize(merge_groups)
-        for what, lines in merge_groups:
+        lines = []
+        for what, group_lines in merge_groups:
             if what == b'conflict':
-                base_lines, a_lines, b_lines = lines
-                self.conflicts = True
+                base_lines, a_lines, b_lines = group_lines
+                conflicts = True
                 if start_marker is not None:
-                    yield start_marker + newline
-                for line in a_lines:
-                    yield line
+                    lines.append(start_marker + newline)
+                lines.extend(a_lines)
                 if base_marker is not None:
-                    yield base_marker + newline
-                    for line in base_lines:
-                        yield line
+                    lines.append(base_marker + newline)
+                    lines.extend(base_lines)
                 if mid_marker is not None:
-                    yield mid_marker + newline
-                for line in b_lines:
-                    yield line
+                    lines.append(mid_marker + newline)
+                lines.extend(b_lines)
                 if end_marker is not None:
-                    yield end_marker + newline
+                    lines.append(end_marker + newline)
             else:
-                for line in lines:
-                    yield line
+                lines.extend(group_lines)
+        return lines, conflicts
 
     def merge_groups(self):
         """Yield sequence of line groups.  Each one is a tuple:
@@ -510,10 +508,9 @@
                 extrakwargs['base_marker'] = b'|||||||'
                 extrakwargs['name_base'] = name_base
                 extrakwargs['minimize'] = False
-            lines = list(
-                m3.merge_lines(name_a=name_a, name_b=name_b, **extrakwargs)
+            lines, conflicts = m3.merge_lines(
+                name_a=name_a, name_b=name_b, **extrakwargs
             )
-            conflicts = m3.conflicts
 
     mergedtext = b''.join(lines)
     if opts.get('print'):