/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 breezy/cmd_version_info.py

  • Committer: Gustav Hartvigsson
  • Date: 2021-01-09 21:36:27 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20210109213627-h1xwcutzy9m7a99b
Added 'Case Preserving Working Tree Use Cases' from Canonical Wiki

* Addod a page from the Canonical Bazaar wiki
  with information on the scmeatics of case
  perserving filesystems an a case insensitive
  filesystem works.
  
  * Needs re-work, but this will do as it is the
    same inforamoton as what was on the linked
    page in the currint documentation.

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
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
"""Commands for generating snapshot information about a bzr tree."""
 
17
"""Commands for generating snapshot information about a brz tree."""
18
18
 
19
 
from bzrlib.lazy_import import lazy_import
 
19
from .lazy_import import lazy_import
20
20
 
21
21
lazy_import(globals(), """
22
 
from bzrlib import (
 
22
from breezy import (
23
23
    branch,
24
 
    errors,
25
 
    ui,
26
24
    version_info_formats,
27
25
    workingtree,
28
26
    )
 
27
from breezy.i18n import gettext
29
28
""")
30
29
 
31
 
from bzrlib.commands import Command
32
 
from bzrlib.option import Option, RegistryOption
 
30
from . import (
 
31
    errors,
 
32
    )
 
33
from .commands import Command
 
34
from .option import Option, RegistryOption
33
35
 
34
36
 
35
37
def _parse_version_info_format(format):
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.CommandError(
 
48
            gettext('No known version info format {0}.'
 
49
                    ' Supported types are: {1}').format(format, formats))
48
50
 
49
51
 
50
52
class cmd_version_info(Command):
56
58
 
57
59
    For example::
58
60
 
59
 
      bzr version-info --custom \\
 
61
      brz version-info --custom \\
60
62
        --template="#define VERSION_INFO \\"Project 1.2.3 (r{revno})\\"\\n"
61
63
 
62
64
    will produce a C header file with formatted string containing the
72
74
    """
73
75
 
74
76
    takes_options = [RegistryOption('format',
75
 
                            'Select the output format.',
76
 
                            value_switches=True,
77
 
                            lazy_registry=('bzrlib.version_info_formats',
78
 
                                           'format_registry')),
 
77
                                    'Select the output format.',
 
78
                                    value_switches=True,
 
79
                                    lazy_registry=('breezy.version_info_formats',
 
80
                                                   'format_registry')),
79
81
                     Option('all', help='Include all possible information.'),
80
82
                     Option('check-clean', help='Check if tree is clean.'),
81
83
                     Option('include-history',
82
84
                            help='Include the revision-history.'),
83
85
                     Option('include-file-revisions',
84
86
                            help='Include the last revision for each file.'),
85
 
                     Option('template', type=str, help='Template for the output.'),
 
87
                     Option('template', type=str,
 
88
                            help='Template for the output.'),
 
89
                     'revision',
86
90
                     ]
87
91
    takes_args = ['location?']
88
92
 
89
 
    encoding_type = 'exact'
 
93
    encoding_type = 'replace'
90
94
 
91
95
    def run(self, location=None, format=None,
92
96
            all=False, check_clean=False, include_history=False,
93
 
            include_file_revisions=False, template=None):
 
97
            include_file_revisions=False, template=None,
 
98
            revision=None):
 
99
 
 
100
        if revision and len(revision) > 1:
 
101
            raise errors.CommandError(
 
102
                gettext('brz version-info --revision takes exactly'
 
103
                        ' one revision specifier'))
94
104
 
95
105
        if location is None:
96
106
            location = '.'
98
108
        if format is None:
99
109
            format = version_info_formats.format_registry.get()
100
110
 
101
 
        wt = None
102
111
        try:
103
112
            wt = workingtree.WorkingTree.open_containing(location)[0]
104
113
        except errors.NoWorkingTree:
105
114
            b = branch.Branch.open(location)
 
115
            wt = None
106
116
        else:
107
117
            b = wt.branch
108
118
 
109
 
        if all or template:
 
119
        if all:
110
120
            include_history = True
111
121
            check_clean = True
112
 
            include_file_revisions=True
 
122
            include_file_revisions = True
 
123
        if template:
 
124
            include_history = True
 
125
            include_file_revisions = True
 
126
            if '{clean}' in template:
 
127
                check_clean = True
 
128
 
 
129
        if revision is not None:
 
130
            revision_id = revision[0].as_revision_id(b)
 
131
        else:
 
132
            revision_id = None
113
133
 
114
134
        builder = format(b, working_tree=wt,
115
 
                check_for_clean=check_clean,
116
 
                include_revision_history=include_history,
117
 
                include_file_revisions=include_file_revisions,
118
 
                template=template)
119
 
        builder.generate(ui.ui_factory.make_output_stream())
 
135
                         check_for_clean=check_clean,
 
136
                         include_revision_history=include_history,
 
137
                         include_file_revisions=include_file_revisions,
 
138
                         template=template, revision_id=revision_id)
 
139
        builder.generate(self.outf)