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