[Pkg-bazaar-commits] ./bzr/unstable r827: - new Merge3.merge_groups feeds back the merged lines
Martin Pool
mbp at sourcefrog.net
Fri Apr 10 08:21:10 UTC 2009
------------------------------------------------------------
revno: 827
committer: Martin Pool <mbp at sourcefrog.net>
timestamp: Tue 2005-07-05 18:30:08 +1000
message:
- new Merge3.merge_groups feeds back the merged lines
modified:
bzrlib/merge3.py
bzrlib/selftest/testmerge3.py
-------------- next part --------------
=== modified file 'bzrlib/merge3.py'
--- a/bzrlib/merge3.py 2005-07-05 08:20:41 +0000
+++ b/bzrlib/merge3.py 2005-07-05 08:30:08 +0000
@@ -68,6 +68,39 @@
self.b_ops = SequenceMatcher(None, base, b).get_opcodes()
+
+ def merge_groups(self):
+ """Yield sequence of line groups. Each one is a tuple:
+
+ 'unchanged', lines
+ Lines unchanged from base
+
+ 'a', lines
+ Lines taken from a
+
+ 'b', lines
+ Lines taken from b
+
+ 'conflict', base_lines, a_lines, b_lines
+ Lines from base were changed to either a or b and conflict.
+ """
+ for t in self.merge_regions():
+ what = t[0]
+ if what == 'unchanged':
+ yield what, self.base[t[1]:t[2]]
+ elif what == 'a':
+ yield what, self.a[t[1]:t[2]]
+ elif what == 'b':
+ yield what, self.b[t[1]:t[2]]
+ elif what == 'conflict':
+ yield (what,
+ self.base[t[1]:t[2]],
+ self.a[t[3]:t[4]],
+ self.b[t[5]:t[6]])
+ else:
+ raise ValueError(what)
+
+
def merge_regions(self):
"""Return sequences of matching and conflicting regions.
@@ -122,7 +155,7 @@
elif equal_b and not equal_a:
yield 'a', ia, amatch
elif not equal_a and not equal_b:
- yield 'conflict', ia, amatch, ib, bmatch
+ yield 'conflict', iz, zmatch, ia, amatch, ib, bmatch
else:
assert 0
=== modified file 'bzrlib/selftest/testmerge3.py'
--- a/bzrlib/selftest/testmerge3.py 2005-07-05 08:20:41 +0000
+++ b/bzrlib/selftest/testmerge3.py 2005-07-05 08:30:08 +0000
@@ -37,6 +37,9 @@
self.assertEquals(list(m3.merge_regions()),
[('unchanged', 0, 2)])
+ self.assertEquals(list(m3.merge_groups()),
+ [('unchanged', ['aaa', 'bbb'])])
+
class FrontInsert(TestBase):
def runTest(self):
@@ -53,6 +56,10 @@
self.assertEquals(list(m3.merge_regions()),
[('a', 0, 2),
('unchanged', 0, 1)])
+
+ self.assertEquals(list(m3.merge_groups()),
+ [('a', ['aaa', 'bbb']),
+ ('unchanged', ['zz'])])
@@ -112,9 +119,15 @@
self.assertEquals(list(m3.merge_regions()),
[('unchanged', 0,1),
- ('conflict', 1,2, 1,2),
+ ('conflict', 1,1, 1,2, 1,2),
('unchanged', 1,2)])
+ self.assertEquals(list(m3.merge_groups()),
+ [('unchanged', ['aaa']),
+ ('conflict', [], ['111'], ['222']),
+ ('unchanged', ['bbb']),
+ ])
+
class ReplaceClash(TestBase):
More information about the Pkg-bazaar-commits
mailing list