5752.3.8
by John Arbash Meinel
Merge bzr.dev 5764 to resolve release-notes (aka NEWS) conflicts |
1 |
# Copyright (C) 2005-2011 Canonical Ltd
|
2052.3.1
by John Arbash Meinel
Add tests to cleanup the copyright of all source files |
2 |
#
|
3 |
# This program is free software; you can redistribute it and/or modify
|
|
4 |
# it under the terms of the GNU General Public License as published by
|
|
5 |
# the Free Software Foundation; either version 2 of the License, or
|
|
6 |
# (at your option) any later version.
|
|
7 |
#
|
|
8 |
# This program is distributed in the hope that it will be useful,
|
|
9 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11 |
# GNU General Public License for more details.
|
|
12 |
#
|
|
13 |
# You should have received a copy of the GNU General Public License
|
|
14 |
# along with this program; if not, write to the Free Software
|
|
4183.7.1
by Sabin Iacob
update FSF mailing address |
15 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6379.6.3
by Jelmer Vernooij
Use absolute_import. |
16 |
|
0.5.1
by John Arbash Meinel
Just an initial working step. |
17 |
"""\
|
18 |
This is an attempt to take the internal delta object, and represent
|
|
19 |
it as a single-file text-only changeset.
|
|
20 |
This should have commands for both generating a changeset,
|
|
21 |
and for applying a changeset.
|
|
22 |
"""
|
|
23 |
||
6379.6.7
by Jelmer Vernooij
Move importing from future until after doc string, otherwise the doc string will disappear. |
24 |
from __future__ import absolute_import |
25 |
||
2520.5.4
by Aaron Bentley
Replace 'bundle-revisions' with 'submit' command |
26 |
from cStringIO import StringIO |
1185.82.78
by Aaron Bentley
Cleanups |
27 |
|
1996.3.8
by John Arbash Meinel
lazy_import bundle and bundle.commands |
28 |
from bzrlib.lazy_import import lazy_import |
29 |
lazy_import(globals(), """ |
|
30 |
from bzrlib import (
|
|
31 |
branch,
|
|
32 |
errors,
|
|
2520.5.4
by Aaron Bentley
Replace 'bundle-revisions' with 'submit' command |
33 |
merge_directive,
|
2490.2.28
by Aaron Bentley
Fix handling of null revision |
34 |
revision as _mod_revision,
|
1996.3.8
by John Arbash Meinel
lazy_import bundle and bundle.commands |
35 |
urlutils,
|
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
36 |
transport,
|
1996.3.8
by John Arbash Meinel
lazy_import bundle and bundle.commands |
37 |
)
|
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
38 |
from bzrlib.i18n import gettext
|
1996.3.8
by John Arbash Meinel
lazy_import bundle and bundle.commands |
39 |
""") |
40 |
||
41 |
from bzrlib.commands import Command |
|
1185.82.78
by Aaron Bentley
Cleanups |
42 |
|
0.5.1
by John Arbash Meinel
Just an initial working step. |
43 |
|
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
44 |
class cmd_bundle_info(Command): |
5131.2.1
by Martin
Permit bzrlib to run under python -OO by explictly assigning to __doc__ for user-visible docstrings |
45 |
__doc__ = """Output interesting stats about a bundle""" |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
46 |
|
47 |
hidden = True |
|
48 |
takes_args = ['location'] |
|
1551.18.4
by Aaron Bentley
Restore bundle-info -v, fix multiparent detection |
49 |
takes_options = ['verbose'] |
2520.4.44
by Aaron Bentley
Fix encoding handling in bundle-info |
50 |
encoding_type = 'exact' |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
51 |
|
52 |
def run(self, location, verbose=False): |
|
53 |
from bzrlib.bundle.serializer import read_bundle |
|
2520.5.4
by Aaron Bentley
Replace 'bundle-revisions' with 'submit' command |
54 |
from bzrlib.bundle import read_mergeable_from_url |
2520.4.44
by Aaron Bentley
Fix encoding handling in bundle-info |
55 |
from bzrlib import osutils |
56 |
term_encoding = osutils.get_terminal_encoding() |
|
2520.5.4
by Aaron Bentley
Replace 'bundle-revisions' with 'submit' command |
57 |
bundle_info = read_mergeable_from_url(location) |
5086.3.1
by Jelmer Vernooij
``bzrlib.merge_directive._BaseMergeDirective`` has been renamed to |
58 |
if isinstance(bundle_info, merge_directive.BaseMergeDirective): |
1551.18.4
by Aaron Bentley
Restore bundle-info -v, fix multiparent detection |
59 |
bundle_file = StringIO(bundle_info.get_raw_bundle()) |
60 |
bundle_info = read_bundle(bundle_file) |
|
61 |
else: |
|
62 |
if verbose: |
|
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
63 |
raise errors.BzrCommandError(gettext( |
64 |
'--verbose requires a merge directive')) |
|
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
65 |
reader_method = getattr(bundle_info, 'get_bundle_reader', None) |
66 |
if reader_method is None: |
|
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
67 |
raise errors.BzrCommandError(gettext('Bundle format not supported')) |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
68 |
|
69 |
by_kind = {} |
|
70 |
file_ids = set() |
|
71 |
for bytes, parents, repo_kind, revision_id, file_id\ |
|
72 |
in reader_method().iter_records(): |
|
73 |
by_kind.setdefault(repo_kind, []).append( |
|
74 |
(bytes, parents, repo_kind, revision_id, file_id)) |
|
75 |
if file_id is not None: |
|
76 |
file_ids.add(file_id) |
|
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
77 |
self.outf.write(gettext('Records\n')) |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
78 |
for kind, records in sorted(by_kind.iteritems()): |
1551.18.4
by Aaron Bentley
Restore bundle-info -v, fix multiparent detection |
79 |
multiparent = sum(1 for b, m, k, r, f in records if |
80 |
len(m.get('parents', [])) > 1) |
|
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
81 |
self.outf.write(gettext('{0}: {1} ({2} multiparent)\n').format( |
6150.3.11
by Jonathan Riddell
syntax fixes |
82 |
kind, len(records), multiparent)) |
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
83 |
self.outf.write(gettext('unique files: %d\n') % len(file_ids)) |
2911.6.1
by Blake Winton
Change 'print >> f,'s to 'f.write('s. |
84 |
self.outf.write('\n') |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
85 |
nicks = set() |
86 |
committers = set() |
|
87 |
for revision in bundle_info.real_revisions: |
|
2520.4.42
by Aaron Bentley
Don't assume every revision has a branch nick |
88 |
if 'branch-nick' in revision.properties: |
89 |
nicks.add(revision.properties['branch-nick']) |
|
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
90 |
committers.add(revision.committer) |
91 |
||
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
92 |
self.outf.write(gettext('Revisions\n')) |
93 |
self.outf.write((gettext('nicks: %s\n') |
|
2911.6.1
by Blake Winton
Change 'print >> f,'s to 'f.write('s. |
94 |
% ', '.join(sorted(nicks))).encode(term_encoding, 'replace')) |
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
95 |
self.outf.write((gettext('committers: \n%s\n') % |
2911.6.1
by Blake Winton
Change 'print >> f,'s to 'f.write('s. |
96 |
'\n'.join(sorted(committers)).encode(term_encoding, 'replace'))) |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
97 |
if verbose: |
2911.6.1
by Blake Winton
Change 'print >> f,'s to 'f.write('s. |
98 |
self.outf.write('\n') |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
99 |
bundle_file.seek(0) |
2520.4.74
by Aaron Bentley
bzr info handles patchless bundles |
100 |
line = bundle_file.readline() |
101 |
line = bundle_file.readline() |
|
2520.4.76
by Aaron Bentley
Move base64-encoding into merge directives |
102 |
content = bundle_file.read().decode('bz2') |
6150.3.3
by Jonathan Riddell
gettext() bzrlib/bundle |
103 |
self.outf.write(gettext("Decoded contents\n")) |
2520.4.35
by Aaron Bentley
zap obsolete changeset commands, add bundle-info command |
104 |
self.outf.write(content) |
2911.6.1
by Blake Winton
Change 'print >> f,'s to 'f.write('s. |
105 |
self.outf.write('\n') |