~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/cmd_version_info.py

  • Committer: Jelmer Vernooij
  • Date: 2012-01-24 13:14:06 UTC
  • mto: (6445.4.5 nested-trees-spec)
  • mto: This revision was merged to the branch mainline in revision 6518.
  • Revision ID: jelmer@samba.org-20120124131406-wedftkorbpv37bm0
Import nested tree doc from devnotes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
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(), """
22
24
from bzrlib import (
23
25
    branch,
24
26
    errors,
25
 
    ui,
26
27
    version_info_formats,
27
28
    workingtree,
28
29
    )
 
30
from bzrlib.i18n import gettext
29
31
""")
30
32
 
31
33
from bzrlib.commands import Command
42
44
        return version_info_formats.get_builder(format)
43
45
    except KeyError:
44
46
        formats = version_info_formats.get_builder_formats()
45
 
        raise errors.BzrCommandError('No known version info format %s.'
46
 
                                     ' Supported types are: %s'
47
 
                                     % (format, formats))
 
47
        raise errors.BzrCommandError(gettext('No known version info format {0}.'
 
48
                                     ' Supported types are: {1}').format(
 
49
                                     format, formats))
48
50
 
49
51
 
50
52
class cmd_version_info(Command):
83
85
                     Option('include-file-revisions',
84
86
                            help='Include the last revision for each file.'),
85
87
                     Option('template', type=str, help='Template for the output.'),
 
88
                     'revision',
86
89
                     ]
87
90
    takes_args = ['location?']
88
91
 
90
93
 
91
94
    def run(self, location=None, format=None,
92
95
            all=False, check_clean=False, include_history=False,
93
 
            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'))
94
103
 
95
104
        if location is None:
96
105
            location = '.'
98
107
        if format is None:
99
108
            format = version_info_formats.format_registry.get()
100
109
 
101
 
        wt = None
102
110
        try:
103
111
            wt = workingtree.WorkingTree.open_containing(location)[0]
104
112
        except errors.NoWorkingTree:
105
113
            b = branch.Branch.open(location)
 
114
            wt = None
106
115
        else:
107
116
            b = wt.branch
108
117
 
109
 
        if all or template:
 
118
        if all:
110
119
            include_history = True
111
120
            check_clean = True
112
 
            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
113
132
 
114
133
        builder = format(b, working_tree=wt,
115
134
                check_for_clean=check_clean,
116
135
                include_revision_history=include_history,
117
136
                include_file_revisions=include_file_revisions,
118
 
                template=template)
119
 
        builder.generate(ui.ui_factory.make_output_stream())
 
137
                template=template, revision_id=revision_id)
 
138
        builder.generate(self.outf)