Rev 22: really get gc working with 1.10 in http://people.ubuntu.com/~robertc/baz2.0/plugins/groupcompress/trunk

Robert Collins robertc at robertcollins.net
Thu Jan 8 04:18:22 GMT 2009


At http://people.ubuntu.com/~robertc/baz2.0/plugins/groupcompress/trunk

------------------------------------------------------------
revno: 22
revision-id: robertc at robertcollins.net-20090108041820-8u4qmcarcv70so32
parent: robertc at robertcollins.net-20090107032515-tj4y1xwol3rme9k0
committer: Robert Collins <robertc at robertcollins.net>
branch nick: trunk
timestamp: Thu 2009-01-08 15:18:20 +1100
message:
  really get gc working with 1.10
=== modified file 'repofmt.py'
--- a/repofmt.py	2009-01-07 03:25:15 +0000
+++ b/repofmt.py	2009-01-08 04:18:20 +0000
@@ -50,9 +50,8 @@
 
 
 def open_pack(self):
-    return self._pack_collection.pack_factory(self._pack_collection._upload_transport,
-        self._pack_collection._index_transport,
-        self._pack_collection._pack_transport, upload_suffix=self.suffix,
+    return self._pack_collection.pack_factory(self._pack_collection,
+        upload_suffix=self.suffix,
         file_mode=self._pack_collection.repo.bzrdir._get_file_mode())
 
 
@@ -61,8 +60,7 @@
 
 class GCPack(NewPack):
 
-    def __init__(self, upload_transport, index_transport, pack_transport,
-        upload_suffix='', file_mode=None):
+    def __init__(self, pack_collection, upload_suffix='', file_mode=None):
         """Create a NewPack instance.
 
         :param upload_transport: A writable transport for the pack to be
@@ -78,24 +76,28 @@
         """
         # The relative locations of the packs are constrained, but all are
         # passed in because the caller has them, so as to avoid object churn.
+        index_builder_class = pack_collection._index_builder_class
         Pack.__init__(self,
             # Revisions: parents list, no text compression.
-            BTreeBuilder(reference_lists=1),
+            index_builder_class(reference_lists=1),
             # Inventory: compressed, with graph for compatibility with other
             # existing bzrlib code.
-            BTreeBuilder(reference_lists=1),
+            index_builder_class(reference_lists=1),
             # Texts: per file graph:
-            BTreeBuilder(reference_lists=1, key_elements=2),
+            index_builder_class(reference_lists=1, key_elements=2),
             # Signatures: Just blobs to store, no compression, no parents
             # listing.
-            BTreeBuilder(reference_lists=0),
+            index_builder_class(reference_lists=0),
             )
+        self._pack_collection = pack_collection
+        # When we make readonly indices, we need this.
+        self.index_class = pack_collection._index_class
         # where should the new pack be opened
-        self.upload_transport = upload_transport
+        self.upload_transport = pack_collection._upload_transport
         # where are indices written out to
-        self.index_transport = index_transport
+        self.index_transport = pack_collection._index_transport
         # where is the pack renamed to when it is finished?
-        self.pack_transport = pack_transport
+        self.pack_transport = pack_collection._pack_transport
         # What file mode to upload the pack and indices with.
         self._file_mode = file_mode
         # tracks the content written to the .pack file.
@@ -146,12 +148,6 @@
         # what state is the pack in? (open, finished, aborted)
         self._state = 'open'
 
-    def _replace_index_with_readonly(self, index_type):
-        setattr(self, index_type + '_index',
-            BTreeGraphIndex(self.index_transport,
-                self.index_name(index_type, self.name),
-                self.index_sizes[self.index_offset(index_type)]))
-
 
 RepositoryPackCollection.pack_factory = NewPack
 
@@ -171,8 +167,7 @@
         # Do not permit preparation for writing if we're not in a 'write lock'.
         if not self.repo.is_write_locked():
             raise errors.NotWriteLocked(self)
-        self._new_pack = self.pack_factory(self._upload_transport, self._index_transport,
-            self._pack_transport, upload_suffix='.pack',
+        self._new_pack = self.pack_factory(self, upload_suffix='.pack',
             file_mode=self.repo.bzrdir._get_file_mode())
         # allow writing: queue writes to a new index
         self.revision_index.add_writable_index(self._new_pack.revision_index,
@@ -204,7 +199,9 @@
         self._pack_collection = GCRepositoryPackCollection(self,
             self._transport, index_transport,
             self._transport.clone('upload'),
-            self._transport.clone('packs'))
+            self._transport.clone('packs'),
+            _format.index_builder_class,
+            _format.index_class)
         self.inventories = GroupCompressVersionedFiles(
             _GCGraphIndex(self._pack_collection.inventory_index.combined_index,
                 add_callback=self._pack_collection.inventory_index.add_callback,




More information about the bazaar-commits mailing list