[Pkg-bazaar-commits] ./bzr/unstable r832: - New Merge3.merge_annotated method for debugging.

Martin Pool mbp at sourcefrog.net
Fri Apr 10 08:21:11 UTC 2009


------------------------------------------------------------
revno: 832
committer: Martin Pool <mbp at sourcefrog.net>
timestamp: Tue 2005-07-05 19:55:35 +1000
message:
  - New Merge3.merge_annotated method for debugging.
  
  - Remove dead code.
modified:
  bzrlib/merge3.py
-------------- next part --------------
=== modified file 'bzrlib/merge3.py'
--- a/bzrlib/merge3.py	2005-07-05 09:04:24 +0000
+++ b/bzrlib/merge3.py	2005-07-05 09:55:35 +0000
@@ -43,14 +43,6 @@
         return None
 
 
-def threeway(baseline, aline, bline):
-    if baseline == aline:
-        return bline
-    elif baseline == bline:
-        return aline
-    else:
-        return [aline, bline]
-
 
 
 class Merge3(object):
@@ -109,6 +101,37 @@
 
 
 
+    def merge_annotated(self):
+        """Return merge with conflicts, showing origin of lines.
+
+        Most useful for debugging merge.        
+        """
+        for t in self.merge_regions():
+            what = t[0]
+            if what == 'unchanged':
+                for i in range(t[1], t[2]):
+                    yield 'u | ' + self.base[i]
+            elif what == 'a' or what == 'same':
+                for i in range(t[1], t[2]):
+                    yield what[0] + ' | ' + self.a[i]
+            elif what == 'b':
+                for i in range(t[1], t[2]):
+                    yield 'b | ' + self.b[i]
+            elif what == 'conflict':
+                yield '<<<<\n'
+                for i in range(t[3], t[4]):
+                    yield 'A | ' + self.a[i]
+                yield '----\n'
+                for i in range(t[5], t[6]):
+                    yield 'B | ' + self.b[i]
+                yield '>>>>\n'
+            else:
+                raise ValueError(what)
+        
+        
+
+
+
     def merge_groups(self):
         """Yield sequence of line groups.  Each one is a tuple:
 
@@ -319,7 +342,8 @@
 
     m3 = Merge3(base, a, b)
 
-    sys.stdout.writelines(m3.merge_lines(name_a=argv[1], name_b=argv[3]))
+    # sys.stdout.writelines(m3.merge_lines(name_a=argv[1], name_b=argv[3]))
+    sys.stdout.writelines(m3.merge_annotated())
 
 
 if __name__ == '__main__':



More information about the Pkg-bazaar-commits mailing list