~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/check.py

  • Committer: Martin Pool
  • Date: 2005-06-10 07:19:12 UTC
  • Revision ID: mbp@sourcefrog.net-20050610071911-97fa22f079414945
- update check command to use aaron's progress code
  rather than hand-hacked progress indicator

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
 
19
19
 
20
 
######################################################################
21
 
# consistency checks
22
20
 
23
 
def check(branch, progress=True):
 
21
def check(branch):
 
22
    """Run consistency checks on a branch.
 
23
    """
24
24
    import sys
25
25
 
26
26
    from bzrlib.trace import mutter
27
27
    from bzrlib.errors import BzrCheckError
28
28
    from bzrlib.osutils import fingerprint_file
 
29
    from bzrlib.progress import ProgressBar, Progress
29
30
    
30
31
    out = sys.stdout
31
32
 
32
 
    # TODO: factor out
33
 
    if not (hasattr(out, 'isatty') and out.isatty()):
34
 
        progress=False
35
 
 
36
 
    if progress:
37
 
        def p(m):
38
 
            mutter('checking ' + m)
39
 
            out.write('\rchecking: %-50.50s' % m)
40
 
            out.flush()
41
 
    else:
42
 
        def p(m):
43
 
            mutter('checking ' + m)
44
 
 
45
 
    p('history of %r' % branch.base)
 
33
    pb = ProgressBar()
46
34
    last_ptr = None
47
35
    checked_revs = {}
48
36
    
54
42
    
55
43
    for rid in history:
56
44
        revno += 1
57
 
        p('revision %d/%d' % (revno, revcount))
 
45
        pb(Progress('revision', revno, revcount))
58
46
        mutter('    revision {%s}' % rid)
59
47
        rev = branch.get_revision(rid)
60
48
        if rev.revision_id != rid:
72
60
        seen_ids = {}
73
61
        seen_names = {}
74
62
 
75
 
        p('revision %d/%d file ids' % (revno, revcount))
 
63
        ## p('revision %d/%d file ids' % (revno, revcount))
76
64
        for file_id in inv:
77
65
            if file_id in seen_ids:
78
 
                raise BzrCheckError('duplicated file_id {%s} in inventory for revision {%s}'
79
 
                        % (file_id, rid))
 
66
                raise BzrCheckError('duplicated file_id {%s} '
 
67
                                    'in inventory for revision {%s}'
 
68
                                    % (file_id, rid))
80
69
            seen_ids[file_id] = True
81
70
 
82
71
        i = 0
83
72
        len_inv = len(inv)
84
73
        for file_id in inv:
85
74
            i += 1
86
 
            if (i % 100) == 0:
87
 
                p('revision %d/%d file text %d/%d' % (revno, revcount, i, len_inv))
 
75
            #if (i % 100) == 0:
 
76
            #    p('revision %d/%d file text %d/%d' % (revno, revcount, i, len_inv))
88
77
 
89
78
            ie = inv[file_id]
90
79
 
113
102
                    raise BzrCheckError('directory {%s} has text in revision {%s}'
114
103
                            % (file_id, rid))
115
104
 
116
 
        p('revision %d/%d file paths' % (revno, revcount))
 
105
        # p('revision %d/%d file paths' % (revno, revcount))
117
106
        for path, ie in inv.iter_entries():
118
107
            if path in seen_names:
119
 
                raise BzrCheckError('duplicated path %r in inventory for revision {%s}' % (path, revid))
 
108
                raise BzrCheckError('duplicated path %r '
 
109
                                    'in inventory for revision {%s}'
 
110
                                    % (path, revid))
120
111
            seen_names[path] = True
121
112
 
122
113
 
123
 
    p('done')
124
 
    if progress:
125
 
        print 
 
114
    pb.clear()
126
115
    print 'checked %d revisions, %d file texts' % (revcount, len(checked_texts))
127
116