Fix revlog.parseindex
parseindex could fail if read returns too little data in the right
moment (e.g. when there's still leftover data from the previous
iteration and read returns less than "s" bytes).
#!/usr/bin/env python
import sys, os
from mercurial import hg
f = sys.argv[1]
r1 = hg.revlog(open, f + ".i", f + ".d")
r2 = hg.revlog(open, f + ".i2", f + ".d2")
tr = hg.transaction(open, "journal")
for i in xrange(r1.count()):
n = r1.node(i)
p1, p2 = r1.parents(n)
l = r1.linkrev(n)
t = r1.revision(n)
n2 = r2.addrevision(t, tr, l, p1, p2)
tr.close()
os.rename(f + ".i", f + ".i.old")
os.rename(f + ".d", f + ".d.old")
os.rename(f + ".i2", f + ".i")
os.rename(f + ".d2", f + ".d")