Rev 3293: Remove _KnitIndex.get_parents. in http://people.ubuntu.com/~robertc/baz2.0/versioned_files
Robert Collins
robertc at robertcollins.net
Thu Mar 20 01:31:09 GMT 2008
At http://people.ubuntu.com/~robertc/baz2.0/versioned_files
------------------------------------------------------------
revno: 3293
revision-id:robertc at robertcollins.net-20080320013104-3wg168d1kqn9v10n
parent: robertc at robertcollins.net-20080320004325-ee5fzf6ax6cmjgfx
committer: Robert Collins <robertc at robertcollins.net>
branch nick: versionedfile.apicleanup
timestamp: Thu 2008-03-20 12:31:04 +1100
message:
Remove _KnitIndex.get_parents.
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 2008-03-20 00:43:25 +0000
+++ b/bzrlib/knit.py 2008-03-20 01:31:04 +0000
@@ -575,7 +575,7 @@
fulltext_size = size
break
delta_size += size
- delta_parents = self._index.get_parents(parent)
+ delta_parents = self._index.get_parent_map([parent])[parent]
else:
# We couldn't find a fulltext, so we must create a new one
return False
@@ -1516,11 +1516,18 @@
The order is undefined, allowing for different optimisations in
the underlying implementation.
"""
- for version_id in version_ids:
- try:
- yield version_id, tuple(self.get_parents(version_id))
- except KeyError:
- pass
+ parent_map = self.get_parent_map(version_ids)
+ parent_map_set = set(parent_map)
+ unknown_existence = set()
+ for parents in parent_map.itervalues():
+ unknown_existence.update(parents)
+ unknown_existence.difference_update(parent_map_set)
+ present_parents = set(self.get_parent_map(unknown_existence))
+ present_parents.update(parent_map_set)
+ for version_id, parents in parent_map.iteritems():
+ parents = tuple(parent for parent in parents
+ if parent in present_parents)
+ yield version_id, parents
def num_versions(self):
return len(self._history)
@@ -1634,11 +1641,6 @@
pass
return result
- def get_parents(self, version_id):
- """Return parents of specified version ignoring ghosts."""
- return [parent for parent in self._cache[version_id][4]
- if parent in self._cache]
-
def get_parents_with_ghosts(self, version_id):
"""Return parents of specified version with ghosts."""
try:
@@ -1947,14 +1949,6 @@
result[node[1][0]] = ()
return result
- def get_parents(self, version_id):
- """Return parents of specified version ignoring ghosts."""
- parents = list(self.iter_parents([version_id]))
- if not parents:
- # missing key
- raise errors.RevisionNotPresent(version_id, self)
- return parents[0][1]
-
def get_parents_with_ghosts(self, version_id):
"""Return parents of specified version with ghosts."""
try:
=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py 2008-03-20 00:43:25 +0000
+++ b/bzrlib/tests/test_knit.py 2008-03-20 01:31:04 +0000
@@ -599,8 +599,8 @@
"c option 0 1 1 0 :",
])
index = self.get_knit_index(transport, "filename", "r")
- self.assertEqual(["a"], index.get_parents("b"))
- self.assertEqual(["b", "a"], index.get_parents("c"))
+ self.assertEqual({"b":("a",), "c":("b", "a")},
+ index.get_parent_map(["b", "c"]))
def test_write_utf8_version_id(self):
unicode_revision_id = u"version-\N{CYRILLIC CAPITAL LETTER A}"
@@ -902,7 +902,7 @@
self.assertEqual(["opt1"], index.get_options("a"))
self.assertEqual(["opt2", "opt3"], index.get_options("b"))
- def test_get_parents(self):
+ def test_get_parent_map(self):
transport = MockTransport([
_KnitIndex.HEADER,
"a option 0 1 :",
@@ -911,9 +911,11 @@
])
index = self.get_knit_index(transport, "filename", "r")
- self.assertEqual([], index.get_parents("a"))
- self.assertEqual(["a", "c"], index.get_parents("b"))
- self.assertEqual(["b", "a"], index.get_parents("c"))
+ self.assertEqual({
+ "a":(),
+ "b":("a", "c"),
+ "c":("b", "a", "e"),
+ }, index.get_parent_map(["a", "b", "c"]))
def test_get_parents_with_ghosts(self):
transport = MockTransport([
More information about the bazaar-commits
mailing list