diff -r eeba4eaf0716 -r 5fc2ae1c631b mercurial/repair.py --- a/mercurial/repair.py Mon Nov 11 16:40:02 2013 -0800 +++ b/mercurial/repair.py Mon Nov 11 16:42:49 2013 -0800 @@ -38,16 +38,8 @@ """return the changesets which will be broken by the truncation""" s = set() def collectone(revlog): - linkgen = (revlog.linkrev(i) for i in revlog) - # find the truncation point of the revlog - for lrev in linkgen: - if lrev >= striprev: - break - # see if any revision after this point has a linkrev - # less than striprev (those will be broken by strip) - for lrev in linkgen: - if lrev < striprev: - s.add(lrev) + _, brokenset = revlog.getstrippoint(striprev) + s.update([revlog.linkrev(r) for r in brokenset]) collectone(repo.manifest) for fname in files: