/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/bundle/serializer/v4.py

  • Committer: Robert Collins
  • Date: 2008-02-13 03:30:01 UTC
  • mfrom: (3221 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3224.
  • Revision ID: robertc@robertcollins.net-20080213033001-rw70ul0zb02ph856
Merge to fix conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
160
160
            source_file = iterablefile.IterableFile(self.iter_decode(fileobj))
161
161
        else:
162
162
            source_file = StringIO(bz2.decompress(fileobj.read()))
163
 
        self._container = pack.ContainerReader(source_file)
 
163
        self._container_file = source_file
164
164
 
165
165
    @staticmethod
166
166
    def iter_decode(fileobj):
167
167
        """Iterate through decoded fragments of the file"""
168
168
        decompressor = bz2.BZ2Decompressor()
169
169
        for line in fileobj:
170
 
            yield decompressor.decompress(line)
 
170
            try:
 
171
                yield decompressor.decompress(line)
 
172
            except EOFError:
 
173
                return
171
174
 
172
175
    @staticmethod
173
176
    def decode_name(name):
199
202
        :return: a generator of (bytes, metadata, content_kind, revision_id,
200
203
            file_id)
201
204
        """
202
 
        iterator = self._container.iter_records()
203
 
        for names, meta_bytes in iterator:
 
205
        iterator = pack.iter_records_from_file(self._container_file)
 
206
        for names, bytes in iterator:
204
207
            if len(names) != 1:
205
208
                raise errors.BadBundle('Record has %d names instead of 1'
206
209
                                       % len(names))
207
 
            metadata = bencode.bdecode(meta_bytes(None))
 
210
            metadata = bencode.bdecode(bytes)
208
211
            if metadata['storage_kind'] == 'header':
209
212
                bytes = None
210
213
            else:
211
214
                _unused, bytes = iterator.next()
212
 
                bytes = bytes(None)
213
215
            yield (bytes, metadata) + self.decode_name(names[0][0])
214
216
 
215
217
 
341
343
            revision_order.remove(self.target)
342
344
            revision_order.append(self.target)
343
345
        self.add_mp_records('inventory', None, inv_vf, revision_order)
344
 
        parents_list = self.repository.get_parents(revision_order)
345
 
        for parents, revision_id in zip(parents_list, revision_order):
 
346
        parent_map = self.repository.get_parent_map(revision_order)
 
347
        for revision_id in revision_order:
 
348
            parents = parent_map.get(revision_id, None)
346
349
            revision_text = self.repository.get_revision_xml(revision_id)
347
350
            self.bundle.add_fulltext_record(revision_text, parents,
348
351
                                       'revision', revision_id)