46
46
indicating that the revision was found/not found.
49
from bzrlib import errors
50
53
from bzrlib.branch import Branch
51
54
from bzrlib.bzrdir import BzrDir
52
55
from bzrlib.revision import NULL_REVISION
53
from bzrlib.symbol_versioning import deprecated_function, deprecated_in
54
56
from bzrlib.trace import note
56
57
from bzrlib.workingtree import WorkingTree
58
60
class Check(object):
59
61
"""Check a repository"""
63
def __init__(self, repository, check_repo=True):
64
self.repository = repository
66
def report_results(self, verbose):
67
raise NotImplementedError(self.report_results)
70
class VersionedFileCheck(Check):
71
"""Check a versioned file repository"""
61
73
# The Check object interacts with InventoryEntry.check, etc.
63
75
def __init__(self, repository, check_repo=True):
88
100
if callback_refs is None:
89
101
callback_refs = {}
90
102
self.repository.lock_read()
91
self.progress = bzrlib.ui.ui_factory.nested_progress_bar()
103
self.progress = ui.ui_factory.nested_progress_bar()
93
105
self.progress.update('check', 0, 4)
94
106
if self.check_repo:
170
182
# - we can fill out existence flags at this point
171
183
# - we can read the revision inventory sha at this point
172
184
# - we can check properties and serialisers etc.
173
if not self.repository.revision_graph_can_have_wrong_parents():
185
if not self.repository._format.revision_graph_can_have_wrong_parents:
174
186
# The check against the index isn't needed.
175
187
self.revs_with_bad_parents_in_index = None
176
188
for thing in revision_iterator:
328
340
self.text_key_references[key] = True
331
@deprecated_function(deprecated_in((1,6,0)))
332
def check(branch, verbose):
333
"""Run consistency checks on a branch.
335
Results are reported through logging.
337
Deprecated in 1.6. Please use check_dwim instead.
339
:raise BzrCheckError: if there's a consistency error.
341
check_branch(branch, verbose)
344
@deprecated_function(deprecated_in((1,16,0)))
345
def check_branch(branch, verbose):
346
"""Run consistency checks on a branch.
348
Results are reported through logging.
350
:raise BzrCheckError: if there's a consistency error.
355
for ref in branch._get_check_refs():
356
needed_refs.setdefault(ref, []).append(branch)
357
result = branch.repository.check([branch.last_revision()], needed_refs)
358
branch_result = result.other_results[0]
361
branch_result.report_results(verbose)
364
343
def scan_branch(branch, needed_refs, to_unlock):
365
344
"""Scan a branch for refs.