21
21
and for applying a changeset.
24
from io import BytesIO
30
from ...lazy_import import lazy_import
24
from __future__ import absolute_import
26
from cStringIO import StringIO
28
from brzlib.lazy_import import lazy_import
31
29
lazy_import(globals(), """
35
34
revision as _mod_revision,
39
from breezy.i18n import gettext
38
from brzlib.i18n import gettext
42
from ...commands import Command
41
from brzlib.commands import Command
45
44
class cmd_bundle_info(Command):
51
50
encoding_type = 'exact'
53
52
def run(self, location, verbose=False):
54
from breezy.bzr.bundle.serializer import read_bundle
55
from breezy.mergeable import read_mergeable_from_url
56
from breezy import osutils
53
from brzlib.bundle.serializer import read_bundle
54
from brzlib.bundle import read_mergeable_from_url
55
from brzlib import osutils
57
56
term_encoding = osutils.get_terminal_encoding()
58
57
bundle_info = read_mergeable_from_url(location)
59
58
if isinstance(bundle_info, merge_directive.BaseMergeDirective):
60
bundle_file = BytesIO(bundle_info.get_raw_bundle())
59
bundle_file = StringIO(bundle_info.get_raw_bundle())
61
60
bundle_info = read_bundle(bundle_file)
64
63
raise errors.BzrCommandError(gettext(
65
'--verbose requires a merge directive'))
64
'--verbose requires a merge directive'))
66
65
reader_method = getattr(bundle_info, 'get_bundle_reader', None)
67
66
if reader_method is None:
68
raise errors.BzrCommandError(
69
gettext('Bundle format not supported'))
67
raise errors.BzrCommandError(gettext('Bundle format not supported'))
73
71
for bytes, parents, repo_kind, revision_id, file_id\
74
in reader_method().iter_records():
72
in reader_method().iter_records():
75
73
by_kind.setdefault(repo_kind, []).append(
76
74
(bytes, parents, repo_kind, revision_id, file_id))
77
75
if file_id is not None:
78
76
file_ids.add(file_id)
79
77
self.outf.write(gettext('Records\n'))
80
for kind, records in sorted(by_kind.items()):
78
for kind, records in sorted(by_kind.iteritems()):
81
79
multiparent = sum(1 for b, m, k, r, f in records if
82
80
len(m.get('parents', [])) > 1)
83
81
self.outf.write(gettext('{0}: {1} ({2} multiparent)\n').format(
94
92
self.outf.write(gettext('Revisions\n'))
95
93
self.outf.write((gettext('nicks: %s\n')
96
% ', '.join(sorted(nicks))).encode(term_encoding, 'replace'))
94
% ', '.join(sorted(nicks))).encode(term_encoding, 'replace'))
97
95
self.outf.write((gettext('committers: \n%s\n') %
98
'\n'.join(sorted(committers)).encode(term_encoding, 'replace')))
96
'\n'.join(sorted(committers)).encode(term_encoding, 'replace')))
100
98
self.outf.write('\n')
101
99
bundle_file.seek(0)
102
100
line = bundle_file.readline()
103
101
line = bundle_file.readline()
105
content = bz2.decompress(bundle_file.read())
102
content = bundle_file.read().decode('bz2')
106
103
self.outf.write(gettext("Decoded contents\n"))
107
104
self.outf.write(content)
108
105
self.outf.write('\n')