3 from bup import options, git, _helpers
4 from bup.helpers import *
10 predict Guess object offsets and report the maximum deviation
11 ignore-midx Don't use midx files; use only plain pack idx files.
13 o = options.Options('bup margin', optspec)
14 (opt, flags, extra) = o.parse(sys.argv[1:])
17 o.fatal("no arguments expected")
19 git.check_repo_or_die()
20 git.ignore_midx = opt.ignore_midx
22 mi = git.PackIdxList(git.repo('objects/pack'))
27 for count,i in enumerate(ix):
28 prefix = struct.unpack('!Q', i[:8])[0]
29 expected = prefix * total / (1<<64)
30 diff = count - expected
31 maxdiff = max(maxdiff, abs(diff))
32 print '%d of %d (%.3f%%) ' % (maxdiff, len(ix), maxdiff*100.0/len(ix))
34 assert(count+1 == len(ix))
43 # default mode: find longest matching prefix
49 #assert(str(i) >= last)
50 pm = _helpers.bitmatch(last, i)
51 longmatch = max(longmatch, pm)