Rev 3369: Eliminate the use of VersionedFile.join when fetching data. in http://people.ubuntu.com/~robertc/baz2.0/versioned_files
Robert Collins
robertc at robertcollins.net
Wed Apr 30 05:43:33 BST 2008
At http://people.ubuntu.com/~robertc/baz2.0/versioned_files
------------------------------------------------------------
revno: 3369
revision-id: robertc at robertcollins.net-20080430044326-v6gcokiz2j03dlqx
parent: robertc at robertcollins.net-20080430041351-14fg6mvv6581lsjb
committer: Robert Collins <robertc at robertcollins.net>
branch nick: data_stream_revamp
timestamp: Wed 2008-04-30 14:43:26 +1000
message:
Eliminate the use of VersionedFile.join when fetching data.
modified:
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
=== modified file 'bzrlib/fetch.py'
--- a/bzrlib/fetch.py 2008-04-28 03:52:09 +0000
+++ b/bzrlib/fetch.py 2008-04-30 04:43:26 +0000
@@ -40,8 +40,7 @@
)
from bzrlib.trace import mutter
import bzrlib.ui
-
-from bzrlib.lazy_import import lazy_import
+from bzrlib.versionedfile import filter_absent
# TODO: Avoid repeatedly opening weaves so many times.
@@ -214,9 +213,9 @@
self.to_repository.get_transaction())
from_weave = self.from_weaves.get_weave(file_id,
self.from_repository.get_transaction())
- # we fetch all the texts, because texts do
- # not reference anything, and its cheap enough
- to_weave.join(from_weave, version_ids=required_versions)
+ # Fetch all the texts.
+ to_weave.insert_record_stream(from_weave.get_record_stream(required_versions,
+ 'topological', False))
def _fetch_inventory_weave(self, revs, pb):
pb.update("fetch inventory", 0, 2)
@@ -232,8 +231,8 @@
# know for unselected inventories whether all their required
# texts are present in the other repository - it could be
# corrupt.
- to_weave.join(from_weave, pb=child_pb, msg='merge inventory',
- version_ids=revs)
+ to_weave.insert_record_stream(from_weave.get_record_stream(revs,
+ 'topological', False))
finally:
child_pb.finished()
@@ -295,12 +294,15 @@
to_transaction)
from_sf = self.from_repository._revision_store.get_signature_file(
from_transaction)
- to_sf.join(from_sf, version_ids=revs, ignore_missing=True)
+ # A missing signature is just skipped.
+ to_sf.insert_record_stream(filter_absent(from_sf.get_record_stream(revs,
+ 'unordered', False)))
to_rf = self.to_repository._revision_store.get_revision_file(
to_transaction)
from_rf = self.from_repository._revision_store.get_revision_file(
from_transaction)
- to_rf.join(from_rf, version_ids=revs)
+ to_rf.insert_record_stream(from_rf.get_record_stream(revs,
+ 'topological', False))
class Inter1and2Helper(object):
=== modified file 'bzrlib/tests/interrepository_implementations/test_interrepository.py'
--- a/bzrlib/tests/interrepository_implementations/test_interrepository.py 2008-04-26 06:07:28 +0000
+++ b/bzrlib/tests/interrepository_implementations/test_interrepository.py 2008-04-30 04:43:26 +0000
@@ -184,8 +184,9 @@
finally:
to_repo.unlock()
- # Implementations can either copy the missing basis text, or raise an
- # exception
+ # Implementations can either ensure that the target of the delta is
+ # reconstructable, or raise an exception (which stream based copies
+ # generally do).
try:
to_repo.fetch(tree.branch.repository, 'rev-two')
except errors.RevisionNotPresent, e:
@@ -194,12 +195,12 @@
self.assertRaises((errors.NoSuchRevision, errors.RevisionNotPresent),
to_repo.revision_tree, 'rev-two')
else:
- # If not exception is raised, then the basis text should be
+ # If not exception is raised, then the text should be
# available.
to_repo.lock_read()
try:
- rt = to_repo.revision_tree('rev-one')
- self.assertEqual('contents of tree/a\n',
+ rt = to_repo.revision_tree('rev-two')
+ self.assertEqual('new contents\n',
rt.get_file_text('a-id'))
finally:
to_repo.unlock()
More information about the bazaar-commits
mailing list