/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: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
from __future__ import absolute_import
18
18
 
 
19
from cStringIO import StringIO
19
20
import bz2
20
21
import re
21
22
 
22
 
from ... import (
23
 
    bencode,
 
23
from bzrlib import (
24
24
    errors,
25
25
    iterablefile,
26
26
    lru_cache,
27
27
    multiparent,
28
28
    osutils,
 
29
    pack,
29
30
    revision as _mod_revision,
 
31
    serializer,
30
32
    trace,
31
33
    ui,
32
 
    )
33
 
from ...bzr import (
34
 
    pack,
35
 
    serializer,
36
34
    versionedfile as _mod_versionedfile,
37
35
    )
38
 
from ...bundle import bundle_data, serializer as bundle_serializer
39
 
from ...i18n import ngettext
40
 
from ...sixish import (
41
 
    BytesIO,
42
 
    viewitems,
43
 
    )
 
36
from bzrlib.bundle import bundle_data, serializer as bundle_serializer
 
37
from bzrlib.i18n import ngettext
 
38
from bzrlib import bencode
44
39
 
45
40
 
46
41
class _MPDiffInventoryGenerator(_mod_versionedfile._MPDiffGenerator):
209
204
        if stream_input:
210
205
            source_file = iterablefile.IterableFile(self.iter_decode(fileobj))
211
206
        else:
212
 
            source_file = BytesIO(bz2.decompress(fileobj.read()))
 
207
            source_file = StringIO(bz2.decompress(fileobj.read()))
213
208
        self._container_file = source_file
214
209
 
215
210
    @staticmethod
261
256
            if metadata['storage_kind'] == 'header':
262
257
                bytes = None
263
258
            else:
264
 
                _unused, bytes = next(iterator)
 
259
                _unused, bytes = iterator.next()
265
260
            yield (bytes, metadata) + self.decode_name(names[0][0])
266
261
 
267
262
 
325
320
            # Strip ghosts
326
321
            parents = graph.get_parent_map(revision_ids)
327
322
            self.revision_ids = [r for r in revision_ids if r in parents]
328
 
        self.revision_keys = {(revid,) for revid in self.revision_ids}
 
323
        self.revision_keys = set([(revid,) for revid in self.revision_ids])
329
324
 
330
325
    def do_write(self):
331
326
        """Write all data to the bundle"""
332
327
        trace.note(ngettext('Bundling %d revision.', 'Bundling %d revisions.',
333
328
                            len(self.revision_ids)), len(self.revision_ids))
334
 
        with self.repository.lock_read():
 
329
        self.repository.lock_read()
 
330
        try:
335
331
            self.bundle.begin()
336
332
            self.write_info()
337
333
            self.write_files()
338
334
            self.write_revisions()
339
335
            self.bundle.end()
 
336
        finally:
 
337
            self.repository.unlock()
340
338
        return self.revision_ids
341
339
 
342
340
    def write_info(self):
352
350
        text_keys = []
353
351
        altered_fileids = self.repository.fileids_altered_by_revision_ids(
354
352
                self.revision_ids)
355
 
        for file_id, revision_ids in viewitems(altered_fileids):
 
353
        for file_id, revision_ids in altered_fileids.iteritems():
356
354
            for revision_id in revision_ids:
357
355
                text_keys.append((file_id, revision_id))
358
356
        self._add_mp_records_keys('file', self.repository.texts, text_keys)
675
673
        # inventory deltas to apply rather than calling add_inventory from
676
674
        # scratch each time.
677
675
        inventory_cache = lru_cache.LRUCache(10)
678
 
        with ui.ui_factory.nested_progress_bar() as pb:
 
676
        pb = ui.ui_factory.nested_progress_bar()
 
677
        try:
679
678
            num_records = len(records)
680
679
            for idx, (key, metadata, bytes) in enumerate(records):
681
680
                pb.update('installing inventory', idx, num_records)
716
715
                except errors.UnsupportedInventoryKind:
717
716
                    raise errors.IncompatibleRevision(repr(self._repository))
718
717
                inventory_cache[revision_id] = target_inv
 
718
        finally:
 
719
            pb.finished()
719
720
 
720
721
    def _handle_root(self, target_inv, parent_ids):
721
722
        revision_id = target_inv.revision_id