~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/check.py

  • Committer: Andrew Bennetts
  • Date: 2010-10-13 00:26:41 UTC
  • mto: This revision was merged to the branch mainline in revision 5498.
  • Revision ID: andrew.bennetts@canonical.com-20101013002641-9tlh9k89mlj1666m
Keep docs-plain working.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
so that when the dependent object is checked, matches can be pulled out and
40
40
evaluated in-line rather than re-reading the same data many times.
41
41
check_refs are tuples (kind, value). Currently defined kinds are:
42
 
 
43
42
* 'trees', where value is a revid and the looked up objects are revision trees.
44
43
* 'lefthand-distance', where value is a revid and the looked up objects are the
45
44
  distance along the lefthand path to NULL for that revid.
47
46
  indicating that the revision was found/not found.
48
47
"""
49
48
 
50
 
from bzrlib import (
51
 
    errors,
52
 
    ui,
53
 
    )
 
49
from bzrlib import errors
54
50
from bzrlib.branch import Branch
55
51
from bzrlib.bzrdir import BzrDir
56
52
from bzrlib.revision import NULL_REVISION
 
53
from bzrlib.symbol_versioning import deprecated_function, deprecated_in
57
54
from bzrlib.trace import note
 
55
import bzrlib.ui
58
56
from bzrlib.workingtree import WorkingTree
59
57
 
60
 
 
61
58
class Check(object):
62
59
    """Check a repository"""
63
60
 
64
 
    def __init__(self, repository, check_repo=True):
65
 
        self.repository = repository
66
 
 
67
 
    def report_results(self, verbose):
68
 
        raise NotImplementedError(self.report_results)
69
 
 
70
 
 
71
 
class VersionedFileCheck(Check):
72
 
    """Check a versioned file repository"""
73
 
 
74
61
    # The Check object interacts with InventoryEntry.check, etc.
75
62
 
76
63
    def __init__(self, repository, check_repo=True):
101
88
        if callback_refs is None:
102
89
            callback_refs = {}
103
90
        self.repository.lock_read()
104
 
        self.progress = ui.ui_factory.nested_progress_bar()
 
91
        self.progress = bzrlib.ui.ui_factory.nested_progress_bar()
105
92
        try:
106
93
            self.progress.update('check', 0, 4)
107
94
            if self.check_repo:
183
170
        # - we can fill out existence flags at this point
184
171
        # - we can read the revision inventory sha at this point
185
172
        # - we can check properties and serialisers etc.
186
 
        if not self.repository._format.revision_graph_can_have_wrong_parents:
 
173
        if not self.repository.revision_graph_can_have_wrong_parents():
187
174
            # The check against the index isn't needed.
188
175
            self.revs_with_bad_parents_in_index = None
189
176
            for thing in revision_iterator:
300
287
        """Check all the weaves we can get our hands on.
301
288
        """
302
289
        weave_ids = []
303
 
        storebar = ui.ui_factory.nested_progress_bar()
 
290
        storebar = bzrlib.ui.ui_factory.nested_progress_bar()
304
291
        try:
305
292
            self._check_weaves(storebar)
306
293
        finally:
341
328
            self.text_key_references[key] = True
342
329
 
343
330
 
 
331
@deprecated_function(deprecated_in((1,6,0)))
 
332
def check(branch, verbose):
 
333
    """Run consistency checks on a branch.
 
334
 
 
335
    Results are reported through logging.
 
336
 
 
337
    Deprecated in 1.6.  Please use check_dwim instead.
 
338
 
 
339
    :raise BzrCheckError: if there's a consistency error.
 
340
    """
 
341
    check_branch(branch, verbose)
 
342
 
 
343
 
 
344
@deprecated_function(deprecated_in((1,16,0)))
 
345
def check_branch(branch, verbose):
 
346
    """Run consistency checks on a branch.
 
347
 
 
348
    Results are reported through logging.
 
349
 
 
350
    :raise BzrCheckError: if there's a consistency error.
 
351
    """
 
352
    branch.lock_read()
 
353
    try:
 
354
        needed_refs = {}
 
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]
 
359
    finally:
 
360
        branch.unlock()
 
361
    branch_result.report_results(verbose)
 
362
 
 
363
 
344
364
def scan_branch(branch, needed_refs, to_unlock):
345
365
    """Scan a branch for refs.
346
366