/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 bzrlib/info.py

  • Committer: Robert Collins
  • Date: 2006-03-03 02:09:49 UTC
  • mto: (1594.2.4 integration)
  • mto: This revision was merged to the branch mainline in revision 1596.
  • Revision ID: robertc@robertcollins.net-20060303020949-0ddc6f33d0a43943
Smoke test for RevisionStore factories creating revision stores.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
 
24
24
import bzrlib.diff as diff
25
 
from bzrlib.errors import (NoWorkingTree, NotBranchError,
26
 
                           NoRepositoryPresent, NotLocalUrl)
27
 
from bzrlib.missing import find_unmerged
28
25
from bzrlib.osutils import format_date
29
26
from bzrlib.symbol_versioning import *
30
27
 
37
34
    return i        
38
35
 
39
36
 
40
 
def plural(n, base='', pl=None):
41
 
    if n == 1:
42
 
        return base
43
 
    elif pl != None:
44
 
        return pl
45
 
    else:
46
 
        return 's'
47
 
 
48
 
 
49
 
def _show_location_info(repository=None, branch=None, working=None):
50
 
    """Show known locations for working, branch and repository."""
51
 
    print 'Location:'
52
 
    if working and branch and working.bzrdir != branch.bzrdir:
53
 
        # Lightweight checkout
54
 
        print '       checkout root: %s' % (
55
 
            working.bzrdir.root_transport.base)
56
 
        print '  checkout of branch: %s' % (
57
 
            branch.bzrdir.root_transport.base)
58
 
    elif branch:
59
 
        # Standalone or bound branch (normal checkout)
60
 
        print '         branch root: %s' % (
61
 
            branch.bzrdir.root_transport.base)
62
 
        if branch.get_bound_location():
63
 
            print '     bound to branch: %s' % branch.get_bound_location()
64
 
 
65
 
    if repository and (not branch or repository.bzrdir != branch.bzrdir):
66
 
        if repository.is_shared():
67
 
            print '   shared repository: %s' % (
68
 
                repository.bzrdir.root_transport.base)
 
37
@deprecated_function(zero_eight)
 
38
def show_info(b):
 
39
    """Please see show_bzrdir_info."""
 
40
    return show_bzrdir_info(b.bzrdir)
 
41
 
 
42
def show_bzrdir_info(a_bzrdir):
 
43
    """Output to stdout the 'info' for a_bzrdir."""
 
44
 
 
45
    working = a_bzrdir.open_workingtree()
 
46
    b = a_bzrdir.open_branch()
 
47
    
 
48
    if working.bzrdir != b.bzrdir:
 
49
        print 'working tree format:', working._format
 
50
        print 'branch location:', b.bzrdir.root_transport.base
 
51
    try:
 
52
        b._format.get_format_string()
 
53
        format = b._format
 
54
    except NotImplementedError:
 
55
        format = b.bzrdir._format
 
56
    print 'branch format:', format
 
57
 
 
58
    def plural(n, base='', pl=None):
 
59
        if n == 1:
 
60
            return base
 
61
        elif pl != None:
 
62
            return pl
69
63
        else:
70
 
            print '          repository: %s' % (
71
 
                repository.bzrdir.root_transport.base)
72
 
 
73
 
    if branch:
74
 
        if branch.get_parent():
75
 
            print '       parent branch: %s' % branch.get_parent()
76
 
        if branch.get_push_location():
77
 
            print '      push to branch: %s' % branch.get_push_location()
78
 
 
79
 
 
80
 
def _show_format_info(control=None, repository=None, branch=None, working=None):
81
 
    """Show known formats for control, working, branch and repository."""
82
 
    print
83
 
    print 'Format:'
84
 
    if control:
85
 
        print '       control: %s' % control._format.get_format_description()
86
 
    if working:
87
 
        print '  working tree: %s' % working._format.get_format_description()
88
 
    if branch:
89
 
        print '        branch: %s' % branch._format.get_format_description()
90
 
    if repository:
91
 
        print '    repository: %s' % repository._format.get_format_description()
92
 
 
93
 
 
94
 
def _show_missing_revisions_branch(branch):
95
 
    """Show missing master revisions in branch."""
96
 
    # Try with inaccessible branch ?
97
 
    master = branch.get_master_branch()
98
 
    if master:
99
 
        local_extra, remote_extra = find_unmerged(branch, master)
100
 
        if remote_extra:
101
 
            print
102
 
            print 'Branch is out of date: missing %d revision%s.' % (
103
 
                len(remote_extra), plural(len(remote_extra)))
104
 
 
105
 
 
106
 
def _show_missing_revisions_working(working):
107
 
    """Show missing revisions in working tree."""
108
 
    branch = working.branch
 
64
            return 's'
 
65
 
 
66
    count_version_dirs = 0
 
67
 
109
68
    basis = working.basis_tree()
110
69
    work_inv = working.inventory
111
70
    delta = diff.compare_trees(basis, working, want_unchanged=True)
112
 
    history = branch.revision_history()
113
 
    tree_last_id = working.last_revision()
114
 
 
115
 
    if len(history) and tree_last_id != history[-1]:
116
 
        tree_last_revno = branch.revision_id_to_revno(tree_last_id)
117
 
        missing_count = len(history) - tree_last_revno
118
 
        print
 
71
    history = b.revision_history()
 
72
    
 
73
    print
 
74
    if len(history) and working.last_revision() != history[-1]:
 
75
        try:
 
76
            missing_count = len(history) - history.index(working.last_revision())
 
77
        except ValueError:
 
78
            # consider it all out of date
 
79
            missing_count = len(history)
119
80
        print 'Working tree is out of date: missing %d revision%s.' % (
120
81
            missing_count, plural(missing_count))
121
 
 
122
 
 
123
 
def _show_working_stats(working):
124
 
    """Show statistics about a working tree."""
125
 
    basis = working.basis_tree()
126
 
    work_inv = working.inventory
127
 
    delta = diff.compare_trees(basis, working, want_unchanged=True)
128
 
 
129
 
    print
130
 
    print 'In the working tree:'
 
82
    print 'in the working tree:'
131
83
    print '  %8s unchanged' % len(delta.unchanged)
132
84
    print '  %8d modified' % len(delta.modified)
133
85
    print '  %8d added' % len(delta.added)
140
92
            ignore_cnt += 1
141
93
        else:
142
94
            unknown_cnt += 1
 
95
 
143
96
    print '  %8d unknown' % unknown_cnt
144
97
    print '  %8d ignored' % ignore_cnt
145
98
 
151
104
          % (dir_cnt,
152
105
             plural(dir_cnt, 'subdirectory', 'subdirectories'))
153
106
 
154
 
 
155
 
def _show_branch_stats(branch, verbose):
156
 
    """Show statistics about a branch."""
157
 
    repository = branch.repository
158
 
    history = branch.revision_history()
159
 
 
160
107
    print
161
 
    print 'Branch history:'
 
108
    print 'branch history:'
162
109
    revno = len(history)
163
110
    print '  %8d revision%s' % (revno, plural(revno))
164
 
    if verbose:
165
 
        committers = {}
166
 
        for rev in history:
167
 
            committers[repository.get_revision(rev).committer] = True
168
 
        print '  %8d committer%s' % (len(committers), plural(len(committers)))
 
111
    committers = {}
 
112
    for rev in history:
 
113
        committers[b.repository.get_revision(rev).committer] = True
 
114
    print '  %8d committer%s' % (len(committers), plural(len(committers)))
169
115
    if revno > 0:
170
 
        firstrev = repository.get_revision(history[0])
 
116
        firstrev = b.repository.get_revision(history[0])
171
117
        age = int((time.time() - firstrev.timestamp) / 3600 / 24)
172
118
        print '  %8d day%s old' % (age, plural(age))
173
119
        print '   first revision: %s' % format_date(firstrev.timestamp,
174
120
                                                    firstrev.timezone)
175
121
 
176
 
        lastrev = repository.get_revision(history[-1])
 
122
        lastrev = b.repository.get_revision(history[-1])
177
123
        print '  latest revision: %s' % format_date(lastrev.timestamp,
178
124
                                                    lastrev.timezone)
179
125
 
180
126
#     print
181
 
#     print 'Text store:'
182
 
#     c, t = branch.text_store.total_size()
 
127
#     print 'text store:'
 
128
#     c, t = b.text_store.total_size()
183
129
#     print '  %8d file texts' % c
184
 
#     print '  %8d KiB' % (t/1024)
 
130
#     print '  %8d kB' % (t/1024)
 
131
 
 
132
    print
 
133
    print 'revision store:'
 
134
    c, t = b.repository.revision_store.total_size()
 
135
    print '  %8d revision%s' % (c, plural(c))
 
136
    print '  %8d kB' % (t/1024)
 
137
 
185
138
 
186
139
#     print
187
 
#     print 'Inventory store:'
188
 
#     c, t = branch.inventory_store.total_size()
 
140
#     print 'inventory store:'
 
141
#     c, t = b.inventory_store.total_size()
189
142
#     print '  %8d inventories' % c
190
 
#     print '  %8d KiB' % (t/1024)
191
 
 
192
 
 
193
 
def _show_repository_info(repository):
194
 
    """Show settings of a repository."""
195
 
    if repository.make_working_trees():
196
 
        print
197
 
        print 'Create working tree for new branches inside the repository.'
198
 
 
199
 
 
200
 
def _show_repository_stats(repository):
201
 
    """Show statistics about a repository."""
202
 
    if repository.bzrdir.root_transport.listable():
203
 
        print
204
 
        print 'Revision store:'
205
 
        c, t = repository._revision_store.total_size(repository.get_transaction())
206
 
        print '  %8d revision%s' % (c, plural(c))
207
 
        print '  %8d KiB' % (t/1024)
208
 
 
209
 
 
210
 
@deprecated_function(zero_eight)
211
 
def show_info(b):
212
 
    """Please see show_bzrdir_info."""
213
 
    return show_bzrdir_info(b.bzrdir)
214
 
 
215
 
 
216
 
def show_bzrdir_info(a_bzrdir, verbose=False):
217
 
    """Output to stdout the 'info' for a_bzrdir."""
218
 
    try:
219
 
        working = a_bzrdir.open_workingtree()
220
 
        working.lock_read()
221
 
        try:
222
 
            show_tree_info(working, verbose)
223
 
        finally:
224
 
            working.unlock()
225
 
        return
226
 
    except (NoWorkingTree, NotLocalUrl):
227
 
        pass
228
 
 
229
 
    try:
230
 
        branch = a_bzrdir.open_branch()
231
 
        branch.lock_read()
232
 
        try:
233
 
            show_branch_info(branch, verbose)
234
 
        finally:
235
 
            branch.unlock()
236
 
        return
237
 
    except NotBranchError:
238
 
        pass
239
 
 
240
 
    try:
241
 
        repository = a_bzrdir.open_repository()
242
 
        repository.lock_read()
243
 
        try:
244
 
            show_repository_info(repository, verbose)
245
 
        finally:
246
 
            repository.unlock()
247
 
        return
248
 
    except NoRepositoryPresent:
249
 
        pass
250
 
 
251
 
    # Return silently, cmd_info returns NotBranchError if no bzrdir
252
 
    # could be opened.
253
 
 
254
 
 
255
 
def show_tree_info(working, verbose):
256
 
    """Output to stdout the 'info' for working."""
257
 
    branch = working.branch
258
 
    repository = branch.repository
259
 
    control = working.bzrdir
260
 
 
261
 
    _show_location_info(repository, branch, working)
262
 
    _show_format_info(control, repository, branch, working)
263
 
    _show_missing_revisions_branch(branch)
264
 
    _show_missing_revisions_working(working)
265
 
    _show_working_stats(working)
266
 
    _show_branch_stats(branch, verbose)
267
 
    _show_repository_stats(repository)
268
 
 
269
 
 
270
 
def show_branch_info(branch, verbose):
271
 
    """Output to stdout the 'info' for branch."""
272
 
    repository = branch.repository
273
 
    control = branch.bzrdir
274
 
 
275
 
    _show_location_info(repository, branch)
276
 
    _show_format_info(control, repository, branch)
277
 
    _show_missing_revisions_branch(branch)
278
 
    _show_branch_stats(branch, verbose)
279
 
    _show_repository_stats(repository)
280
 
 
281
 
 
282
 
def show_repository_info(repository, verbose):
283
 
    """Output to stdout the 'info' for branch."""
284
 
    control = repository.bzrdir
285
 
 
286
 
    _show_location_info(repository)
287
 
    _show_format_info(control, repository)
288
 
    _show_repository_info(repository)
289
 
    _show_repository_stats(repository)
 
143
#     print '  %8d kB' % (t/1024)
 
144