Rev 3381: Vf.keys() stacking support. in http://people.ubuntu.com/~robertc/baz2.0/shallow-branch
Robert Collins
robertc at robertcollins.net
Thu Jun 19 14:27:48 BST 2008
At http://people.ubuntu.com/~robertc/baz2.0/shallow-branch
------------------------------------------------------------
revno: 3381
revision-id: robertc at robertcollins.net-20080619132744-zsz5c5cpv6sovwoy
parent: robertc at robertcollins.net-20080619131424-gbltev5ud5u82gbt
committer: Robert Collins <robertc at robertcollins.net>
branch nick: stacking-knits
timestamp: Thu 2008-06-19 23:27:44 +1000
message:
Vf.keys() stacking support.
modified:
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py 2008-06-19 13:14:24 +0000
+++ b/bzrlib/knit.py 2008-06-19 13:27:44 +0000
@@ -1527,7 +1527,12 @@
"""See VersionedFiles.keys."""
if 'evil' in debug.debug_flags:
trace.mutter_callsite(2, "keys scales with size of history")
- return self._index.keys()
+ sources = [self._index] + self._fallback_vfs
+ result = set()
+ for source in sources:
+ result.update(source.keys())
+ return result
+
class _KndxIndex(object):
=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py 2008-06-19 13:14:24 +0000
+++ b/bzrlib/tests/test_knit.py 2008-06-19 13:27:44 +0000
@@ -1456,7 +1456,27 @@
pass
def test_keys(self):
- pass
+ key1 = ('foo1',)
+ key2 = ('foo2',)
+ # all sources are asked for keys:
+ basis, test = self.get_basis_and_test_knit()
+ keys = test.keys()
+ self.assertEqual(set(), set(keys))
+ self.assertEqual([("keys",)], basis.calls)
+ # keys from a basis are returned:
+ basis.add_lines(key1, (), [])
+ basis.calls = []
+ keys = test.keys()
+ self.assertEqual(set([key1]), set(keys))
+ self.assertEqual([("keys",)], basis.calls)
+ # keys in both are not duplicated:
+ test.add_lines(key2, (), [])
+ basis.add_lines(key2, (), [])
+ basis.calls = []
+ keys = test.keys()
+ self.assertEqual(2, len(keys))
+ self.assertEqual(set([key1, key2]), set(keys))
+ self.assertEqual([("keys",)], basis.calls)
def test_add_mpdiffs(self):
pass
=== modified file 'bzrlib/versionedfile.py'
--- a/bzrlib/versionedfile.py 2008-06-19 13:14:24 +0000
+++ b/bzrlib/versionedfile.py 2008-06-19 13:27:44 +0000
@@ -549,6 +549,10 @@
self.calls.append(("get_sha1s", copy(keys)))
return self._backing_vf.get_sha1s(keys)
+ def keys(self):
+ self.calls.append(("keys",))
+ return self._backing_vf.keys()
+
class KeyMapper(object):
"""KeyMappers map between keys and underlying paritioned storage."""
More information about the bazaar-commits
mailing list