Rev 3041: Suggested by Robert: Move the missing externals check into part of Packer.pack() in http://bzr.arbash-meinel.com/branches/bzr/0.93-dev/fetch_check_parents_165290
John Arbash Meinel
john at arbash-meinel.com
Fri Nov 30 22:14:06 GMT 2007
At http://bzr.arbash-meinel.com/branches/bzr/0.93-dev/fetch_check_parents_165290
------------------------------------------------------------
revno: 3041
revision-id:john at arbash-meinel.com-20071130221329-thu3lcbolzqliilw
parent: john at arbash-meinel.com-20071130213846-qxvz8yuyfyiftil5
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: fetch_check_parents_165290
timestamp: Fri 2007-11-30 16:13:29 -0600
message:
Suggested by Robert: Move the missing externals check into part of Packer.pack()
modified:
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
-------------- next part --------------
=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py 2007-11-30 21:38:46 +0000
+++ b/bzrlib/repofmt/pack_repo.py 2007-11-30 22:13:29 +0000
@@ -678,6 +678,19 @@
self.new_pack._writer, self.new_pack.text_index))
self._log_copied_texts()
+ def _check_references(self):
+ """Make sure our external refereneces are present."""
+ external_refs = self.new_pack._external_compression_parents_of_texts()
+ if external_refs:
+ index = self._pack_collection.text_index.combined_index
+ found_items = list(index.iter_entries(external_refs))
+ if len(found_items) != len(external_refs):
+ found_keys = set(k for idx, k, refs, value in found_items)
+ missing_items = external_refs - found_keys
+ missing_file_id, missing_revision_id = missing_items.pop()
+ raise errors.RevisionNotPresent(missing_revision_id,
+ missing_file_id)
+
def _create_pack_from_packs(self):
self.pb.update("Opening pack", 0, 5)
self.new_pack = self.open_pack()
@@ -714,6 +727,7 @@
time.ctime(), self._pack_collection._upload_transport.base, new_pack.random_name,
new_pack.signature_index.key_count(),
time.time() - new_pack.start_time)
+ self._check_references()
if not self._use_pack(new_pack):
new_pack.abort()
return None
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py 2007-11-30 21:38:46 +0000
+++ b/bzrlib/repository.py 2007-11-30 22:13:29 +0000
@@ -2558,16 +2558,6 @@
pack = Packer(self.target._pack_collection, packs, '.fetch',
revision_ids).pack()
if pack is not None:
- external_refs = pack._external_compression_parents_of_texts()
- if external_refs:
- index = self.target._pack_collection.text_index.combined_index
- found_items = list(index.iter_entries(external_refs))
- if len(found_items) != len(external_refs):
- found_keys = set(k for idx, k, refs, value in found_items)
- missing_items = external_refs - found_keys
- missing_file_id, missing_revision_id = missing_items.pop()
- raise errors.MissingText(self.target, missing_revision_id,
- missing_file_id)
self.target._pack_collection._save_pack_names()
# Trigger an autopack. This may duplicate effort as we've just done
# a pack creation, but for now it is simpler to think about as
=== modified file 'bzrlib/tests/interrepository_implementations/test_interrepository.py'
--- a/bzrlib/tests/interrepository_implementations/test_interrepository.py 2007-11-30 20:11:58 +0000
+++ b/bzrlib/tests/interrepository_implementations/test_interrepository.py 2007-11-30 22:13:29 +0000
@@ -186,7 +186,7 @@
# exception
try:
to_repo.fetch(tree.branch.repository, 'rev-two')
- except (errors.MissingText, errors.RevisionNotPresent), e:
+ except errors.RevisionNotPresent, e:
# If an exception is raised, the revision should not be in the
# target.
self.assertRaises((errors.NoSuchRevision, errors.RevisionNotPresent),
More information about the bazaar-commits
mailing list