Rev 2831: Move the pack ContainerWriter instance into NewPack. in http://people.ubuntu.com/~robertc/baz2.0/repository

Robert Collins robertc at robertcollins.net
Tue Oct 16 07:28:44 BST 2007


At http://people.ubuntu.com/~robertc/baz2.0/repository

------------------------------------------------------------
revno: 2831
revision-id: robertc at robertcollins.net-20071016062834-ugk0v4877wniqwtj
parent: robertc at robertcollins.net-20071016055752-06ojnexvbraz4bv5
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Tue 2007-10-16 16:28:34 +1000
message:
  Move the pack ContainerWriter instance into NewPack.
modified:
  bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py	2007-10-16 05:57:52 +0000
+++ b/bzrlib/repofmt/pack_repo.py	2007-10-16 06:28:34 +0000
@@ -251,6 +251,9 @@
                 _buffer[:] = [[], 0]
         # expose this on self, for the occasion when clients want to add data.
         self._write_data = _write_data
+        # a pack writer object to serialise pack records.
+        self._writer = pack.ContainerWriter(self._write_data)
+        self._writer.begin()
 
     def abort(self):
         """Cancel creating this pack."""
@@ -277,6 +280,7 @@
          - stores the index size tuple for the pack in the index_sizes
            attribute.
         """
+        self._writer.end()
         if self._buffer[1]:
             self._write_data('', flush=True)
         self.name = self._hash.hexdigest()
@@ -563,8 +567,6 @@
                 '%s%s %s revisions wanted %s t=0',
                 time.ctime(), self._upload_transport.base, new_pack.random_name,
                 plain_pack_list, rev_count)
-        writer = pack.ContainerWriter(new_pack._write_data)
-        writer.begin()
         # select revisions
         if revision_ids:
             revision_keys = [(revision_id,) for revision_id in revision_ids]
@@ -576,8 +578,8 @@
             packs, 'revision_index')[0]
         revision_nodes = self._index_contents(revision_index_map, revision_keys)
         # copy revision keys and adjust values
-        list(self._copy_nodes_graph(revision_nodes, revision_index_map, writer,
-            new_pack.revision_index))
+        list(self._copy_nodes_graph(revision_nodes, revision_index_map,
+            new_pack._writer, new_pack.revision_index))
         if 'fetch' in debug.debug_flags:
             mutter('%s: create_pack: revisions copied: %s%s %d items t+%6.3fs',
                 time.ctime(), self._upload_transport.base, new_pack.random_name,
@@ -595,7 +597,7 @@
         # XXX: Should be a helper function to allow different inv representation
         # at this point.
         inv_lines = self._copy_nodes_graph(inv_nodes, inventory_index_map,
-            writer, new_pack.inventory_index, output_lines=True)
+            new_pack._writer, new_pack.inventory_index, output_lines=True)
         if revision_ids:
             fileid_revisions = self.repo._find_file_ids_from_xml_inventory_lines(
                 inv_lines, revision_ids)
@@ -633,8 +635,8 @@
                 raise errors.RevisionNotPresent(a_missing_key[1],
                     a_missing_key[0])
         # copy text keys and adjust values
-        list(self._copy_nodes_graph(text_nodes, text_index_map, writer,
-            new_pack.text_index))
+        list(self._copy_nodes_graph(text_nodes, text_index_map,
+            new_pack._writer, new_pack.text_index))
         if 'fetch' in debug.debug_flags:
             mutter('%s: create_pack: file texts copied: %s%s %d items t+%6.3fs',
                 time.ctime(), self._upload_transport.base, new_pack.random_name,
@@ -647,7 +649,8 @@
         signature_nodes = self._index_contents(signature_index_map,
             signature_filter)
         # copy signature keys and adjust values
-        self._copy_nodes(signature_nodes, signature_index_map, writer, new_pack.signature_index)
+        self._copy_nodes(signature_nodes, signature_index_map, new_pack._writer,
+            new_pack.signature_index)
         if 'fetch' in debug.debug_flags:
             mutter('%s: create_pack: revision signatures copied: %s%s %d items t+%6.3fs',
                 time.ctime(), self._upload_transport.base, new_pack.random_name,
@@ -657,7 +660,6 @@
             new_pack.abort()
             return None
         # finish the pack
-        writer.end()
         new_pack.finish()
         # add to the repository
         self.allocate(new_pack)
@@ -1127,8 +1129,6 @@
 
         self.repo._open_pack_tuple = (self._upload_transport, self._new_pack.random_name)
 
-        self._open_pack_writer = pack.ContainerWriter(self._new_pack._write_data)
-        self._open_pack_writer.begin()
         self.repo._revision_store.setup()
         self.repo.weave_store.setup()
         self.repo._inv_thunk.setup()
@@ -1140,7 +1140,6 @@
 
     def _commit_write_group(self):
         if self._new_pack.data_inserted():
-            self._open_pack_writer.end()
             self._new_pack.finish()
             self._upload_transport.rename(self.repo._open_pack_tuple[1],
                 '../packs/' + self._new_pack.name + '.pack')
@@ -1206,7 +1205,7 @@
             # allow writing: queue writes to a new index
             indices.insert(0, self.repo._packs._new_pack.revision_index)
             pack_map[self.repo._packs._new_pack.revision_index] = self.repo._open_pack_tuple
-            writer = self.repo._packs._open_pack_writer, self.repo._packs._new_pack.revision_index
+            writer = self.repo._packs._new_pack._writer, self.repo._packs._new_pack.revision_index
             add_callback = self.repo._packs._new_pack.revision_index.add_nodes
         else:
             writer = None
@@ -1234,7 +1233,7 @@
             # allow writing: queue writes to a new index
             indices.insert(0, self.repo._packs._new_pack.signature_index)
             pack_map[self.repo._packs._new_pack.signature_index] = self.repo._open_pack_tuple
-            writer = self.repo._packs._open_pack_writer, self.repo._packs._new_pack.signature_index
+            writer = self.repo._packs._new_pack._writer, self.repo._packs._new_pack.signature_index
             add_callback = self.repo._packs._new_pack.signature_index.add_nodes
         else:
             writer = None
@@ -1259,13 +1258,13 @@
             self.repo._revision_all_indices.insert_index(0, self.repo._packs._new_pack.revision_index)
             self.repo._revision_knit._index._add_callback = self.repo._packs._new_pack.revision_index.add_nodes
             self.repo._revision_knit_access.set_writer(
-                self.repo._packs._open_pack_writer,
+                self.repo._packs._new_pack._writer,
                 self.repo._packs._new_pack.revision_index, self.repo._open_pack_tuple)
         if self.repo._signature_knit is not None:
             self.repo._signature_all_indices.insert_index(0, self.repo._packs._new_pack.signature_index)
             self.repo._signature_knit._index._add_callback = self.repo._packs._new_pack.signature_index.add_nodes
             self.repo._signature_knit_access.set_writer(
-                self.repo._packs._open_pack_writer,
+                self.repo._packs._new_pack._writer,
                 self.repo._packs._new_pack.signature_index, self.repo._open_pack_tuple)
 
 
@@ -1358,7 +1357,7 @@
     
     def _setup_knit(self, for_write):
         if for_write:
-            writer = (self.repo._packs._open_pack_writer, self.repo._packs._new_pack.text_index)
+            writer = (self.repo._packs._new_pack._writer, self.repo._packs._new_pack.text_index)
         else:
             writer = None
         self.repo._text_knit_access = _PackAccess(
@@ -1402,7 +1401,7 @@
         if self.repo.is_in_write_group():
             add_callback = self.repo._packs._new_pack.inventory_index.add_nodes
             self.repo._inv_pack_map[self.repo._packs._new_pack.inventory_index] = self.repo._open_pack_tuple
-            writer = self.repo._packs._open_pack_writer, self.repo._packs._new_pack.inventory_index
+            writer = self.repo._packs._new_pack._writer, self.repo._packs._new_pack.inventory_index
         else:
             add_callback = None # no data-adding permitted.
             writer = None



More information about the bazaar-commits mailing list