+
+def check_midx(name):
+ nicename = git.repo_rel(name)
+ log('Checking %s.\n' % nicename)
+ try:
+ ix = git.open_idx(name)
+ except git.GitError, e:
+ add_error('%s: %s' % (name, e))
+ return
+ for count,subname in enumerate(ix.idxnames):
+ sub = git.open_idx(os.path.join(os.path.dirname(name), subname))
+ for ecount,e in enumerate(sub):
+ if not (ecount % 1234):
+ qprogress(' %d/%d: %s %d/%d\r'
+ % (count, len(ix.idxnames),
+ git.shorten_hash(subname), ecount, len(sub)))
+ if not sub.exists(e):
+ add_error("%s: %s: %s missing from idx"
+ % (nicename, git.shorten_hash(subname),
+ str(e).encode('hex')))
+ if not ix.exists(e):
+ add_error("%s: %s: %s missing from midx"
+ % (nicename, git.shorten_hash(subname),
+ str(e).encode('hex')))
+ prev = None
+ for ecount,e in enumerate(ix):
+ if not (ecount % 1234):
+ qprogress(' Ordering: %d/%d\r' % (ecount, len(ix)))
+ if not e >= prev:
+ add_error('%s: ordering error: %s < %s'
+ % (nicename,
+ str(e).encode('hex'), str(prev).encode('hex')))
+ prev = e
+