diff -r 7eca4cfa8aad -r ffe6a5ca1a89 hg --- a/hg Wed May 04 10:07:28 2005 -0800 +++ b/hg Wed May 04 10:50:21 2005 -0800 @@ -220,19 +220,37 @@ nodes = {"\0"*20: 1} for i in range(fl.count()): n = fl.node(i) + if n not in filenodes[f]: print "%s:%s not in manifests" % (f, hg.hex(n)) - if fl.linkrev(n) not in filelinkrevs[f]: + else: + del filenodes[f][n] + + flr = fl.linkrev(n) + if flr not in filelinkrevs[f]: print "%s:%s points to unexpected changeset rev %d" \ % (f, hg.hex(n), fl.linkrev(n)) + else: + filelinkrevs[f].remove(flr) + + # verify contents t = fl.read(n) + + # verify parents (p1, p2) = fl.parents(n) if p1 not in nodes: print "%s:%s unknown parent 1 %s" % (f, hg.hex(n), hg.hex(p1)) if p2 not in nodes: print "file %s:%s unknown parent %s" % (f, hg.hex(n), hg.hex(p1)) + nodes[n] = 1 - nodes[n] = 1 + # cross-check + for flr in filelinkrevs[f]: + print "changeset rev %d not in %s" % (flr, f) + + for node in filenodes[f]: + print "node %s in manifests not in %s" % (hg.hex(n), f) + print "%d files, %d changesets, %d total revisions" % (files, changesets, revisions)