Rev 2642: Implement KnitGraphIndex.check_versions_present. in http://people.ubuntu.com/~robertc/baz2.0/repository
Robert Collins
robertc at robertcollins.net
Fri Jul 13 21:36:07 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/repository
------------------------------------------------------------
revno: 2642
revision-id: robertc at robertcollins.net-20070713203605-i1tiuy07vb29oa3y
parent: robertc at robertcollins.net-20070713203033-mcdbqbg809n5mqzm
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Sat 2007-07-14 06:36:05 +1000
message:
Implement KnitGraphIndex.check_versions_present.
modified:
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py 2007-07-13 20:30:33 +0000
+++ b/bzrlib/knit.py 2007-07-13 20:36:05 +0000
@@ -1434,14 +1434,25 @@
def get_parents(self, version_id):
"""Return parents of specified version ignoring ghosts."""
parents = self.get_parents_with_ghosts(version_id)
- present_parents = set([
- parent[0] for parent in self._graph_index.iter_entries(parents)])
+ present_parents = self._present_keys(parents)
return [key for key in parents if key in present_parents]
+ def _present_keys(self, version_ids):
+ return set([
+ node[0] for node in self._graph_index.iter_entries(version_ids)])
+
def get_parents_with_ghosts(self, version_id):
"""Return parents of specified version with ghosts."""
return self._get_node(version_id)[1][0]
+ def check_versions_present(self, version_ids):
+ """Check that all specified versions are present."""
+ version_ids = set(version_ids)
+ present = self._present_keys(version_ids)
+ missing = version_ids.difference(present)
+ if missing:
+ raise RevisionNotPresent(missing.pop, self)
+
class _KnitData(_KnitComponentFile):
"""Contents of the knit data file"""
=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py 2007-07-13 20:30:33 +0000
+++ b/bzrlib/tests/test_knit.py 2007-07-13 20:36:05 +0000
@@ -1662,6 +1662,14 @@
index = self.two_graph_index()
self.assertEqual(('tail', 'ghost'), index.get_parents_with_ghosts('parent'))
+ def test_check_versions_present(self):
+ # ghosts should not be considered present
+ index = self.two_graph_index()
+ self.assertRaises(RevisionNotPresent, index.check_versions_present,
+ ['ghost'])
+ self.assertRaises(RevisionNotPresent, index.check_versions_present,
+ ['tail', 'ghost'])
+ index.check_versions_present(['tail', 'separate'])
## --- mutating tests for later ---
#
More information about the bazaar-commits
mailing list