~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/check.py

  • Committer: Martin Pool
  • Date: 2005-08-25 00:47:04 UTC
  • Revision ID: mbp@sourcefrog.net-20050825004704-e3c75123f29539bf
- expose 'find-merge-base' as a new expert command,
  to help in debugging merges

  move UnrelatedBranches exception into bzrlib.errors

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
import bzrlib.ui
19
 
from bzrlib.trace import note, warning
20
19
 
21
20
def _update_store_entry(obj, obj_id, branch, store_name, store):
22
21
    """This is just a meta-function, which handles both revision entries
72
71
    :param inv_id:  The inventory id for this inventory
73
72
    :param branch:  The Branch where this entry will be stored.
74
73
    """
75
 
    raise NotImplementedError("can't update existing inventory entry")
 
74
    _update_store_entry(inv, inv_id, branch,
 
75
            'inventory-store', branch.inventory_store)
76
76
 
77
77
 
78
78
def check(branch):
83
83
    TODO: Check for extra files in the control directory.
84
84
    """
85
85
    from bzrlib.trace import mutter
86
 
    from bzrlib.errors import BzrCheckError, NoSuchRevision
 
86
    from bzrlib.errors import BzrCheckError
87
87
    from bzrlib.osutils import fingerprint_file
88
88
    from bzrlib.inventory import ROOT_ID
89
89
    from bzrlib.branch import gen_root_id
95
95
 
96
96
        missing_inventory_sha_cnt = 0
97
97
        missing_revision_sha_cnt = 0
98
 
        missing_revision_cnt = 0
99
98
 
100
99
        history = branch.revision_history()
101
100
        revno = 0
135
134
                        missing_revision_sha_cnt += 1
136
135
                        continue
137
136
                    prid = prr.revision_id
138
 
                    
139
 
                    try:
140
 
                        actual_sha = branch.get_revision_sha1(prid)
141
 
                    except NoSuchRevision:
142
 
                        missing_revision_cnt += 1
143
 
                        mutter("parent {%s} of {%s} not present in store",
144
 
                               prid, rev_id)
145
 
                        continue
146
 
                        
 
137
                    actual_sha = branch.get_revision_sha1(prid)
147
138
                    if prr.revision_sha1 != actual_sha:
148
139
                        raise BzrCheckError("mismatched revision sha1 for "
149
140
                                            "parent {%s} of {%s}: %s vs %s"
154
145
                                    "by {%s}"
155
146
                                    % (rev_id, last_rev_id))
156
147
 
157
 
            if hasattr(rev, 'inventory_id') and rev.inventory_id != rev_id:
 
148
            if rev.inventory_id != rev_id:
158
149
                mismatch_inv_id.append(rev_id)
159
150
 
160
151
            ## TODO: Check all the required fields are present on the revision.
161
152
 
162
153
            if rev.inventory_sha1:
163
 
                inv_sha1 = branch.get_inventory_sha1(rev_id)
 
154
                inv_sha1 = branch.get_inventory_sha1(rev.inventory_id)
164
155
                if inv_sha1 != rev.inventory_sha1:
165
156
                    raise BzrCheckError('Inventory sha1 hash doesn\'t match'
166
157
                        ' value in revision {%s}' % rev_id)
168
159
                missing_inventory_sha_cnt += 1
169
160
                mutter("no inventory_sha1 on revision {%s}" % rev_id)
170
161
 
171
 
            inv = branch.get_inventory(rev_id)
 
162
            inv = branch.get_inventory(rev.inventory_id)
172
163
            seen_ids = {}
173
164
            seen_names = {}
174
165
 
227
218
 
228
219
    progress.clear()
229
220
 
230
 
    note('checked %d revisions, %d file texts' % (revcount, len(checked_texts)))
 
221
    print 'checked %d revisions, %d file texts' % (revcount, len(checked_texts))
231
222
    
232
223
    if missing_inventory_sha_cnt:
233
 
        note('%d revisions are missing inventory_sha1' % missing_inventory_sha_cnt)
 
224
        print '%d revisions are missing inventory_sha1' % missing_inventory_sha_cnt
234
225
 
235
226
    if missing_revision_sha_cnt:
236
 
        note('%d parent links are missing revision_sha1' % missing_revision_sha_cnt)
237
 
 
238
 
    if missing_revision_cnt:
239
 
        note('%d revisions are mentioned but not present' % missing_revision_cnt)
240
 
 
241
 
    if missing_revision_cnt:
242
 
        print '%d revisions are mentioned but not present' % missing_revision_cnt
 
227
        print '%d parent links are missing revision_sha1' % missing_revision_sha_cnt
243
228
 
244
229
    # stub this out for now because the main bzr branch has references
245
230
    # to revisions that aren't present in the store -- mbp 20050804
248
233
#        print '  (use "bzr upgrade" to fix them)'
249
234
 
250
235
    if mismatch_inv_id:
251
 
        warning('%d revisions have mismatched inventory ids:' % len(mismatch_inv_id))
 
236
        print '%d revisions have mismatched inventory ids:' % len(mismatch_inv_id)
252
237
        for rev_id in mismatch_inv_id:
253
 
            warning('  %s', rev_id)
 
238
            print '  ', rev_id