~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repofmt/knitpack_repo.py

  • Committer: Jelmer Vernooij
  • Date: 2011-04-15 11:26:00 UTC
  • mfrom: (5757.7.7 knitpackrepo-6)
  • mto: This revision was merged to the branch mainline in revision 5801.
  • Revision ID: jelmer@samba.org-20110415112600-vrv2431lh3gi6wx2
MergeĀ knitpackrepo-6.

Show diffs side-by-side

added added

removed removed

Lines of Context:
71
71
    )
72
72
 
73
73
 
74
 
class KnitPackRepository(PackRepository,KnitRepository):
 
74
class KnitPackRepository(PackRepository, KnitRepository):
75
75
 
76
76
    def __init__(self, _format, a_bzrdir, control_files, _commit_builder_class,
77
77
        _serializer):
87
87
            self._transport.clone('packs'),
88
88
            _format.index_builder_class,
89
89
            _format.index_class,
90
 
            use_chk_index=self._format.supports_chks,
 
90
            use_chk_index=False,
91
91
            )
92
92
        self.inventories = KnitVersionedFiles(
93
93
            _KnitGraphIndex(self._pack_collection.inventory_index.combined_index,
855
855
            self.new_pack.text_index, readv_group_iter, total_items))
856
856
        self._log_copied_texts()
857
857
 
858
 
    def _copy_chks(self, refs=None):
859
 
        # XXX: Todo, recursive follow-pointers facility when fetching some
860
 
        # revisions only.
861
 
        chk_index_map, chk_indices = self._pack_map_and_index_list(
862
 
            'chk_index')
863
 
        chk_nodes = self._index_contents(chk_indices, refs)
864
 
        new_refs = set()
865
 
        # TODO: This isn't strictly tasteful as we are accessing some private
866
 
        #       variables (_serializer). Perhaps a better way would be to have
867
 
        #       Repository._deserialise_chk_node()
868
 
        search_key_func = chk_map.search_key_registry.get(
869
 
            self._pack_collection.repo._serializer.search_key_name)
870
 
        def accumlate_refs(lines):
871
 
            # XXX: move to a generic location
872
 
            # Yay mismatch:
873
 
            bytes = ''.join(lines)
874
 
            node = chk_map._deserialise(bytes, ("unknown",), search_key_func)
875
 
            new_refs.update(node.refs())
876
 
        self._copy_nodes(chk_nodes, chk_index_map, self.new_pack._writer,
877
 
            self.new_pack.chk_index, output_lines=accumlate_refs)
878
 
        return new_refs
879
 
 
880
858
    def _create_pack_from_packs(self):
881
859
        self.pb.update("Opening pack", 0, 5)
882
860
        self.new_pack = self.open_pack()
913
891
                time.ctime(), self._pack_collection._upload_transport.base, new_pack.random_name,
914
892
                new_pack.signature_index.key_count(),
915
893
                time.time() - new_pack.start_time)
916
 
        # copy chk contents
917
 
        # NB XXX: how to check CHK references are present? perhaps by yielding
918
 
        # the items? How should that interact with stacked repos?
919
 
        if new_pack.chk_index is not None:
920
 
            self._copy_chks()
921
 
            if 'pack' in debug.debug_flags:
922
 
                trace.mutter('%s: create_pack: chk content copied: %s%s %d items t+%6.3fs',
923
 
                    time.ctime(), self._pack_collection._upload_transport.base,
924
 
                    new_pack.random_name,
925
 
                    new_pack.chk_index.key_count(),
926
 
                    time.time() - new_pack.start_time)
927
894
        new_pack._check_references()
928
895
        if not self._use_pack(new_pack):
929
896
            new_pack.abort()