~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/check.py

  • Committer: mbp at sourcefrog
  • Date: 2005-03-28 13:20:38 UTC
  • Revision ID: mbp@sourcefrog.net-20050328132038-3a8a5fb9f1023ee1
more check functions

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
            bailout('repeated revision {%s}' % rid)
47
47
        checked_revs.add(rid)
48
48
 
49
 
    #check_inventory()
 
49
        ## TODO: Check all the required fields are present on the revision.
 
50
 
 
51
        inv = branch.get_inventory(rev.inventory_id)
 
52
        check_inventory(branch, inv)
50
53
 
51
54
    mutter('branch %s is OK' % branch.base)
52
55
 
53
 
    ## TODO: Check that previous-inventory and previous-manifest
54
 
    ## are the same as those stored in the previous changeset.
55
 
 
56
 
    ## TODO: Check all patches present in patch directory are
57
 
    ## mentioned in patch history; having an orphaned patch only gives
58
 
    ## a warning.
59
 
 
60
 
    ## TODO: Check cached data is consistent with data reconstructed
61
 
    ## from scratch.
62
 
 
63
 
    ## TODO: Check no control files are versioned.
64
 
 
65
 
    ## TODO: Check that the before-hash of each file in a later
66
 
    ## revision matches the after-hash in the previous revision to
67
 
    ## touch it.
68
 
 
69
 
 
70
 
def check_inventory():
71
 
    mutter("checking inventory file and ids...")
 
56
 
 
57
 
 
58
def check_inventory(branch, inv):
72
59
    seen_ids = Set()
73
60
    seen_names = Set()
74
 
    
75
 
    for l in controlfile('inventory').readlines():
76
 
        parts = l.split()
77
 
        if len(parts) != 2:
78
 
            bailout("malformed inventory line: " + `l`)
79
 
        file_id, name = parts
80
 
        
81
 
        if file_id in seen_ids:
82
 
            bailout("duplicated file id " + file_id)
83
 
        seen_ids.add(file_id)
84
61
 
85
 
        if name in seen_names:
86
 
            bailout("duplicated file name in inventory: " + quotefn(name))
87
 
        seen_names.add(name)
 
62
    for path, ie in inv.iter_entries():
 
63
        if path in seen_names:
 
64
            bailout('duplicated path %r in inventory' % path)
 
65
        seen_names.add(path)
 
66
        if ie.kind == 'file':
 
67
            if not ie.text_id in branch.text_store:
 
68
                bailout('text {%s} not in text_store' % ie.text_id)
88
69
        
89
 
        if is_control_file(name):
90
 
            raise BzrError("control file %s present in inventory" % quotefn(name))