~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/check.py

  • Committer: Martin Pool
  • Date: 2005-07-22 23:32:00 UTC
  • Revision ID: mbp@sourcefrog.net-20050722233200-ccdeca985093a9fb
- now needs python 2.4
- update instructions for running selftest

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# along with this program; if not, write to the Free Software
16
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
 
import bzrlib.ui
19
18
 
20
19
def _update_store_entry(obj, obj_id, branch, store_name, store):
21
20
    """This is just a meta-function, which handles both revision entries
74
73
    _update_store_entry(inv, inv_id, branch,
75
74
            'inventory-store', branch.inventory_store)
76
75
 
77
 
 
78
76
def check(branch):
79
77
    """Run consistency checks on a branch.
80
78
 
85
83
    from bzrlib.trace import mutter
86
84
    from bzrlib.errors import BzrCheckError
87
85
    from bzrlib.osutils import fingerprint_file
 
86
    from bzrlib.progress import ProgressBar
88
87
    from bzrlib.inventory import ROOT_ID
89
88
    from bzrlib.branch import gen_root_id
90
89
 
91
90
    branch.lock_read()
92
91
 
93
92
    try:
 
93
        pb = ProgressBar(show_spinner=True)
94
94
        last_rev_id = None
95
95
 
96
96
        missing_inventory_sha_cnt = 0
104
104
        # for all texts checked, text_id -> sha1
105
105
        checked_texts = {}
106
106
 
107
 
        progress = bzrlib.ui.ui_factory.progress_bar()
108
 
 
109
107
        for rev_id in history:
110
108
            revno += 1
111
 
            progress.update('checking revision', revno, revcount)
112
 
            # mutter('    revision {%s}' % rev_id)
 
109
            pb.update('checking revision', revno, revcount)
 
110
            mutter('    revision {%s}' % rev_id)
113
111
            rev = branch.get_revision(rev_id)
114
112
            if rev.revision_id != rev_id:
115
113
                raise BzrCheckError('wrong internal revision id in revision {%s}'
175
173
            for file_id in inv:
176
174
                i += 1
177
175
                if i & 31 == 0:
178
 
                    progress.tick()
 
176
                    pb.tick()
179
177
 
180
178
                ie = inv[file_id]
181
179
 
204
202
                        raise BzrCheckError('directory {%s} has text in revision {%s}'
205
203
                                % (file_id, rev_id))
206
204
 
207
 
            progress.tick()
 
205
            pb.tick()
208
206
            for path, ie in inv.iter_entries():
209
207
                if path in seen_names:
210
208
                    raise BzrCheckError('duplicated path %s '
216
214
    finally:
217
215
        branch.unlock()
218
216
 
219
 
    progress.clear()
 
217
    pb.clear()
220
218
 
221
219
    print 'checked %d revisions, %d file texts' % (revcount, len(checked_texts))
222
220
    
226
224
    if missing_revision_sha_cnt:
227
225
        print '%d parent links are missing revision_sha1' % missing_revision_sha_cnt
228
226
 
229
 
    # stub this out for now because the main bzr branch has references
230
 
    # to revisions that aren't present in the store -- mbp 20050804
231
 
#    if (missing_inventory_sha_cnt
232
 
#        or missing_revision_sha_cnt):
233
 
#        print '  (use "bzr upgrade" to fix them)'
 
227
    if (missing_inventory_sha_cnt
 
228
        or missing_revision_sha_cnt):
 
229
        print '  (use "bzr upgrade" to fix them)'
234
230
 
235
231
    if mismatch_inv_id:
236
232
        print '%d revisions have mismatched inventory ids:' % len(mismatch_inv_id)