##// END OF EJS Templates
verify: notice extra data in indices
Matt Mackall -
r1667:daff3ef0 default
parent child Browse files
Show More
@@ -1679,11 +1679,17 b' class localrepository(object):'
1679 1679 self.ui.warn(msg + "\n")
1680 1680 errors[0] += 1
1681 1681
1682 def checksize(obj, name):
1683 d = obj.checksize()
1684 if d[0]:
1685 err(_("%s data length off by %d bytes") % (name, d[0]))
1686 if d[1]:
1687 err(_("%s index contains %d extra bytes") % (name, d[1]))
1688
1682 1689 seen = {}
1683 1690 self.ui.status(_("checking changesets\n"))
1684 d = self.changelog.checksize()
1685 if d:
1686 err(_("changeset data short %d bytes") % d)
1691 checksize(self.changelog, "changelog")
1692
1687 1693 for i in range(self.changelog.count()):
1688 1694 changesets += 1
1689 1695 n = self.changelog.node(i)
@@ -1713,9 +1719,8 b' class localrepository(object):'
1713 1719
1714 1720 seen = {}
1715 1721 self.ui.status(_("checking manifests\n"))
1716 d = self.manifest.checksize()
1717 if d:
1718 err(_("manifest data short %d bytes") % d)
1722 checksize(self.manifest, "manifest")
1723
1719 1724 for i in range(self.manifest.count()):
1720 1725 n = self.manifest.node(i)
1721 1726 l = self.manifest.linkrev(n)
@@ -1771,9 +1776,7 b' class localrepository(object):'
1771 1776 continue
1772 1777 files += 1
1773 1778 fl = self.file(f)
1774 d = fl.checksize()
1775 if d:
1776 err(_("%s file data short %d bytes") % (f, d))
1779 checksize(fl, f)
1777 1780
1778 1781 nodes = {nullid: 1}
1779 1782 seen = {}
@@ -213,7 +213,7 b' class revlog(object):'
213 213 m = [None] * l
214 214
215 215 n = 0
216 for f in xrange(0, len(i), s):
216 for f in xrange(0, l * s, s):
217 217 # offset, size, base, linkrev, p1, p2, nodeid
218 218 e = struct.unpack(indexformat, i[f:f + s])
219 219 m[n] = (e[6], n)
@@ -841,14 +841,29 b' class revlog(object):'
841 841 expected = 0
842 842 if self.count():
843 843 expected = self.end(self.count() - 1)
844
844 845 try:
845 846 f = self.opener(self.datafile)
846 847 f.seek(0, 2)
847 848 actual = f.tell()
848 return expected - actual
849 dd = actual - expected
849 850 except IOError, inst:
850 if inst.errno == errno.ENOENT:
851 return 0
852 raise
851 if inst.errno != errno.ENOENT:
852 raise
853 dd = 0
854
855 try:
856 f = self.opener(self.indexfile)
857 f.seek(0, 2)
858 actual = f.tell()
859 s = struct.calcsize(indexformat)
860 i = actual / s
861 di = actual - (i * s)
862 except IOError, inst:
863 if inst.errno != errno.ENOENT:
864 raise
865 di = 0
866
867 return (dd, di)
853 868
854 869
General Comments 0
You need to be logged in to leave comments. Login now