Rev 2752: move commit_write_group to RepositoryPackCollection in http://sourcefrog.net/bzr/pack-repository
Martin Pool
mbp at sourcefrog.net
Wed Sep 19 14:12:33 BST 2007
At http://sourcefrog.net/bzr/pack-repository
------------------------------------------------------------
revno: 2752
revision-id: mbp at sourcefrog.net-20070919131232-0gtp1q90fxz10ctn
parent: mbp at sourcefrog.net-20070919051252-trwq0anc4rqzf6pr
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: pack-repository
timestamp: Wed 2007-09-19 23:12:32 +1000
message:
move commit_write_group to RepositoryPackCollection
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-09-19 05:12:52 +0000
+++ b/bzrlib/repofmt/pack_repo.py 2007-09-19 13:12:32 +0000
@@ -834,6 +834,50 @@
self.repo.weave_store.setup()
self.repo._inv_thunk.setup()
+ def _commit_write_group(self):
+ data_inserted = (self.repo._revision_store.data_inserted() or
+ self.repo.weave_store.data_inserted() or
+ self.repo._inv_thunk.data_inserted())
+ if data_inserted:
+ self.repo._open_pack_writer.end()
+ new_name = self.repo._open_pack_hash.hexdigest()
+ new_pack = Pack()
+ new_pack.name = new_name
+ new_pack.transport = self.repo._upload_transport.clone('../packs/')
+ # To populate:
+ # new_pack.revision_index =
+ # new_pack.inventory_index =
+ # new_pack.text_index =
+ # new_pack.signature_index =
+ self.repo.weave_store.flush(new_name, new_pack)
+ self.repo._inv_thunk.flush(new_name, new_pack)
+ self.repo._revision_store.flush(new_name, new_pack)
+ self.repo._write_stream.close()
+ self.repo._upload_transport.rename(self.repo._open_pack_tuple[1],
+ '../packs/' + new_name + '.pack')
+ # If this fails, its a hash collision. We should:
+ # - determine if its a collision or
+ # - the same content or
+ # - the existing name is not the actual hash - e.g.
+ # its a deliberate attack or data corruption has
+ # occuring during the write of that file.
+ self.allocate(new_name, new_pack.revision_index_length,
+ new_pack.inventory_index_length, new_pack.text_index_length,
+ new_pack.signature_index_length)
+ self.repo._open_pack_tuple = None
+ if not self.autopack():
+ self.save()
+ else:
+ # remove the pending upload
+ self.repo._upload_transport.delete(self.repo._open_pack_tuple[1])
+ self.repo._revision_store.reset()
+ self.repo.weave_store.reset()
+ self.repo._inv_thunk.reset()
+ # forget what names there are - should just refresh and deal with the
+ # delta.
+ self.reset()
+ self.repo._open_pack_hash = None
+ self.repo._write_stream = None
class GraphKnitRevisionStore(KnitRevisionStore):
"""An object to adapt access from RevisionStore's to use GraphKnits.
@@ -1316,49 +1360,7 @@
self._packs._start_write_group()
def _commit_write_group(self):
- data_inserted = (self._revision_store.data_inserted() or
- self.weave_store.data_inserted() or
- self._inv_thunk.data_inserted())
- if data_inserted:
- self._open_pack_writer.end()
- new_name = self._open_pack_hash.hexdigest()
- new_pack = Pack()
- new_pack.name = new_name
- new_pack.transport = self._upload_transport.clone('../packs/')
- # To populate:
- # new_pack.revision_index =
- # new_pack.inventory_index =
- # new_pack.text_index =
- # new_pack.signature_index =
- self.weave_store.flush(new_name, new_pack)
- self._inv_thunk.flush(new_name, new_pack)
- self._revision_store.flush(new_name, new_pack)
- self._write_stream.close()
- self._upload_transport.rename(self._open_pack_tuple[1],
- '../packs/' + new_name + '.pack')
- # If this fails, its a hash collision. We should:
- # - determine if its a collision or
- # - the same content or
- # - the existing name is not the actual hash - e.g.
- # its a deliberate attack or data corruption has
- # occuring during the write of that file.
- self._packs.allocate(new_name, new_pack.revision_index_length,
- new_pack.inventory_index_length, new_pack.text_index_length,
- new_pack.signature_index_length)
- self._open_pack_tuple = None
- if not self._packs.autopack():
- self._packs.save()
- else:
- # remove the pending upload
- self._upload_transport.delete(self._open_pack_tuple[1])
- self._revision_store.reset()
- self.weave_store.reset()
- self._inv_thunk.reset()
- # forget what names there are - should just refresh and deal with the
- # delta.
- self._packs.reset()
- self._open_pack_hash = None
- self._write_stream = None
+ return self._packs._commit_write_group()
def get_inventory_weave(self):
return self._inv_thunk.get_weave()
@@ -1435,49 +1437,7 @@
self._packs._start_write_group()
def _commit_write_group(self):
- data_inserted = (self._revision_store.data_inserted() or
- self.weave_store.data_inserted() or
- self._inv_thunk.data_inserted())
- if data_inserted:
- self._open_pack_writer.end()
- new_name = self._open_pack_hash.hexdigest()
- new_pack = Pack()
- new_pack.name = new_name
- new_pack.transport = self._upload_transport.clone('../packs/')
- # To populate:
- # new_pack.revision_index =
- # new_pack.inventory_index =
- # new_pack.text_index =
- # new_pack.signature_index =
- self.weave_store.flush(new_name, new_pack)
- self._inv_thunk.flush(new_name, new_pack)
- self._revision_store.flush(new_name, new_pack)
- self._write_stream.close()
- self._upload_transport.rename(self._open_pack_tuple[1],
- '../packs/' + new_name + '.pack')
- # If this fails, its a hash collision. We should:
- # - determine if its a collision or
- # - the same content or
- # - the existing name is not the actual hash - e.g.
- # its a deliberate attack or data corruption has
- # occuring during the write of that file.
- self._packs.allocate(new_name, new_pack.revision_index_length,
- new_pack.inventory_index_length, new_pack.text_index_length,
- new_pack.signature_index_length)
- self._open_pack_tuple = None
- if not self._packs.autopack():
- self._packs.save()
- else:
- # remove the pending upload
- self._upload_transport.delete(self._open_pack_tuple[1])
- self._revision_store.reset()
- self.weave_store.reset()
- self._inv_thunk.reset()
- # forget what names there are - should just refresh and deal with the
- # delta.
- self._packs.reset()
- self._open_pack_hash = None
- self._write_stream = None
+ return self._packs._commit_write_group()
def get_inventory_weave(self):
return self._inv_thunk.get_weave()
More information about the bazaar-commits
mailing list