~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/cmd_version_info.py

  • Committer: Tarmac
  • Author(s): Vincent Ladeuil
  • Date: 2017-01-30 14:42:05 UTC
  • mfrom: (6620.1.1 trunk)
  • Revision ID: tarmac-20170130144205-r8fh2xpmiuxyozpv
Merge  2.7 into trunk including fix for bug #1657238 [r=vila]

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Commands for generating snapshot information about a bzr tree."""
18
18
 
 
19
from __future__ import absolute_import
 
20
 
19
21
from bzrlib.lazy_import import lazy_import
20
22
 
21
23
lazy_import(globals(), """
25
27
    version_info_formats,
26
28
    workingtree,
27
29
    )
 
30
from bzrlib.i18n import gettext
28
31
""")
29
32
 
30
33
from bzrlib.commands import Command
41
44
        return version_info_formats.get_builder(format)
42
45
    except KeyError:
43
46
        formats = version_info_formats.get_builder_formats()
44
 
        raise errors.BzrCommandError('No known version info format %s.'
45
 
                                     ' Supported types are: %s'
46
 
                                     % (format, formats))
 
47
        raise errors.BzrCommandError(gettext('No known version info format {0}.'
 
48
                                     ' Supported types are: {1}').format(
 
49
                                     format, formats))
47
50
 
48
51
 
49
52
class cmd_version_info(Command):
82
85
                     Option('include-file-revisions',
83
86
                            help='Include the last revision for each file.'),
84
87
                     Option('template', type=str, help='Template for the output.'),
 
88
                     'revision',
85
89
                     ]
86
90
    takes_args = ['location?']
87
91
 
89
93
 
90
94
    def run(self, location=None, format=None,
91
95
            all=False, check_clean=False, include_history=False,
92
 
            include_file_revisions=False, template=None):
 
96
            include_file_revisions=False, template=None,
 
97
            revision=None):
 
98
 
 
99
        if revision and len(revision) > 1:
 
100
            raise errors.BzrCommandError(
 
101
                gettext('bzr version-info --revision takes exactly'
 
102
                        ' one revision specifier'))
93
103
 
94
104
        if location is None:
95
105
            location = '.'
97
107
        if format is None:
98
108
            format = version_info_formats.format_registry.get()
99
109
 
100
 
        wt = None
101
110
        try:
102
111
            wt = workingtree.WorkingTree.open_containing(location)[0]
103
112
        except errors.NoWorkingTree:
104
113
            b = branch.Branch.open(location)
 
114
            wt = None
105
115
        else:
106
116
            b = wt.branch
107
117
 
108
 
        if all or template:
 
118
        if all:
109
119
            include_history = True
110
120
            check_clean = True
111
 
            include_file_revisions=True
 
121
            include_file_revisions = True
 
122
        if template:
 
123
            include_history = True
 
124
            include_file_revisions = True
 
125
            if '{clean}' in template:
 
126
                check_clean = True
 
127
 
 
128
        if revision is not None:
 
129
            revision_id = revision[0].as_revision_id(b)
 
130
        else:
 
131
            revision_id = None
112
132
 
113
133
        builder = format(b, working_tree=wt,
114
134
                check_for_clean=check_clean,
115
135
                include_revision_history=include_history,
116
136
                include_file_revisions=include_file_revisions,
117
 
                template=template)
 
137
                template=template, revision_id=revision_id)
118
138
        builder.generate(self.outf)