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