Rev 3388: Stacked add_mpdiffs. in http://people.ubuntu.com/~robertc/baz2.0/shallow-branch
Robert Collins
robertc at robertcollins.net
Wed Jun 25 01:41:04 BST 2008
At http://people.ubuntu.com/~robertc/baz2.0/shallow-branch
------------------------------------------------------------
revno: 3388
revision-id: robertc at robertcollins.net-20080625004056-22wn6kasogkq9erq
parent: robertc at robertcollins.net-20080624120313-hyh4pr14fxzkpbs2
committer: Robert Collins <robertc at robertcollins.net>
branch nick: stacking-knits
timestamp: Wed 2008-06-25 10:40:56 +1000
message:
Stacked add_mpdiffs.
modified:
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py 2008-06-24 12:03:13 +0000
+++ b/bzrlib/tests/test_knit.py 2008-06-25 00:40:56 +0000
@@ -1718,7 +1718,28 @@
self.assertEqual([("keys",)], basis.calls)
def test_add_mpdiffs(self):
- pass
+ # records are inserted as normal; add_mpdiff builds on
+ # add_lines, so a smoke test should be all thats needed:
+ key = ('foo',)
+ key_basis = ('bar',)
+ key_delta = ('zaphod',)
+ basis, test = self.get_basis_and_test_knit()
+ source = self.make_test_knit(name='source')
+ basis.add_lines(key_basis, (), ['foo\n'])
+ basis.calls = []
+ source.add_lines(key_basis, (), ['foo\n'])
+ source.add_lines(key_delta, (key_basis,), ['bar\n'])
+ diffs = source.make_mpdiffs([key_delta])
+ test.add_mpdiffs([(key_delta, (key_basis,),
+ source.get_sha1s([key_delta])[key_delta], diffs[0])])
+ self.assertEqual([("get_parent_map", set([key_basis])),
+ ('get_record_stream', [('bar',)], 'unordered', True),
+ ('get_parent_map', set([('bar',)]))],
+ basis.calls)
+ self.assertEqual({key_delta:(key_basis,)},
+ test.get_parent_map([key_delta]))
+ self.assertEqual('bar\n', test.get_record_stream([key_delta],
+ 'unordered', True).next().get_bytes_as('fulltext'))
def test_make_mpdiffs(self):
pass
=== modified file 'bzrlib/versionedfile.py'
--- a/bzrlib/versionedfile.py 2008-06-23 01:13:20 +0000
+++ b/bzrlib/versionedfile.py 2008-06-25 00:40:56 +0000
@@ -753,10 +753,11 @@
if not mpvf.has_version(p))
# It seems likely that adding all the present parents as fulltexts can
# easily exhaust memory.
- present_parents = set(self.get_parent_map(needed_parents).keys())
split_lines = osutils.split_lines
- for record in self.get_record_stream(present_parents, 'unordered',
+ for record in self.get_record_stream(needed_parents, 'unordered',
True):
+ if record.storage_kind == 'absent':
+ continue
mpvf.add_version(split_lines(record.get_bytes_as('fulltext')),
record.key, [])
for (key, parent_keys, expected_sha1, mpdiff), lines in\
More information about the bazaar-commits
mailing list