[Pkg-bazaar-commits] ./bzr/unstable r829: - More merge3 cvs-form stuff

Martin Pool mbp at sourcefrog.net
Fri Apr 10 08:13:41 UTC 2009


------------------------------------------------------------
revno: 829
committer: Martin Pool <mbp at sourcefrog.net>
timestamp: Tue 2005-07-05 18:48:02 +1000
message:
  - More merge3 cvs-form stuff
modified:
  bzrlib/merge3.py
  bzrlib/selftest/testmerge3.py
-------------- next part --------------
=== modified file 'bzrlib/merge3.py'
--- a/bzrlib/merge3.py	2005-07-05 08:37:09 +0000
+++ b/bzrlib/merge3.py	2005-07-05 08:48:02 +0000
@@ -70,11 +70,19 @@
 
 
     def merge_lines(self,
-                    start_marker='<<<<<<<<\n',
-                    mid_marker='========\n',
-                    end_marker='>>>>>>>>\n'):
+                    name_a=None,
+                    name_b=None,
+                    start_marker='<<<<<<<<',
+                    mid_marker='========',
+                    end_marker='>>>>>>>>',
+                    show_base=False):
         """Return merge in cvs-like form.
         """
+        if name_a:
+            start_marker = start_marker + ' ' + name_a
+        if name_b:
+            end_marker = end_marker + ' ' + name_b
+            
         for t in self.merge_regions():
             what = t[0]
             if what == 'unchanged':
@@ -87,13 +95,13 @@
                 for i in range(t[1], t[2]):
                     yield self.b[i]
             elif what == 'conflict':
-                yield start_marker
+                yield start_marker + '\n'
                 for i in range(t[3], t[4]):
                     yield self.a[i]
-                yield mid_marker
+                yield mid_marker + '\n'
                 for i in range(t[5], t[6]):
                     yield self.b[i]
-                yield end_marker
+                yield end_marker + '\n'
             else:
                 raise ValueError(what)
         
@@ -292,3 +300,18 @@
                 del bm[0]
                 
         return unc
+
+
+def main(argv):
+    base = file(argv[1], 'rt').readlines()
+    a = file(argv[2], 'rt').readlines()
+    b = file(argv[3], 'rt').readlines()
+
+    m3 = Merge3(base, a, b)
+
+    sys.stdout.writelines(m3.merge_lines(argv[2], argv[3]))
+
+
+if __name__ == '__main__':
+    import sys
+    sys.exit(main(sys.argv))

=== modified file 'bzrlib/selftest/testmerge3.py'
--- a/bzrlib/selftest/testmerge3.py	2005-07-05 08:37:09 +0000
+++ b/bzrlib/selftest/testmerge3.py	2005-07-05 08:48:02 +0000
@@ -108,9 +108,9 @@
 class InsertClash(TestBase):
     """Both try to insert lines in the same place."""
     def runTest(self):
-        m3 = Merge3(['aaa', 'bbb'],
-                    ['aaa', '111', 'bbb'],
-                    ['aaa', '222', 'bbb'])
+        m3 = Merge3(['aaa\n', 'bbb\n'],
+                    ['aaa\n', '111\n', 'bbb\n'],
+                    ['aaa\n', '222\n', 'bbb\n'])
 
         self.assertEquals(m3.find_unconflicted(),
                           [(0, 1), (1, 2)])
@@ -126,19 +126,25 @@
                            ('unchanged', 1,2)])
 
         self.assertEquals(list(m3.merge_groups()),
-                          [('unchanged', ['aaa']),
-                           ('conflict', [], ['111'], ['222']),
-                           ('unchanged', ['bbb']),
+                          [('unchanged', ['aaa\n']),
+                           ('conflict', [], ['111\n'], ['222\n']),
+                           ('unchanged', ['bbb\n']),
                            ])
 
-        self.assertEquals(list(m3.merge_lines('<<', '--', '>>')),
-                          ['aaa',
-                           '<<',
-                           '111',
-                           '--',
-                           '222',
-                           '>>',
-                           'bbb'])
+        ml = m3.merge_lines(name_a='a',
+                            name_b='b',
+                            start_marker='<<',
+                            mid_marker='--',
+                            end_marker='>>')
+        self.assertEquals(''.join(ml),
+'''aaa
+<< a
+111
+--
+222
+>> b
+bbb
+''')
 
 
 



More information about the Pkg-bazaar-commits mailing list