--- a/mercurial/repair.py Tue Dec 04 12:54:18 2012 -0800
+++ b/mercurial/repair.py Wed Dec 05 14:33:15 2012 -0800
@@ -112,8 +112,10 @@
saverevs.difference_update(descendants)
savebases = [cl.node(r) for r in saverevs]
stripbases = [cl.node(r) for r in tostrip]
- newbmtarget = repo.revs('sort(heads((::%ld) - (%ld)), -rev)',
- tostrip, tostrip)
+
+ # For a set s, max(parents(s) - s) is the same as max(heads(::s - s)), but
+ # is much faster
+ newbmtarget = repo.revs('max(parents(%ld) - (%ld))', tostrip, tostrip)
if newbmtarget:
newbmtarget = repo[newbmtarget[0]].node()
else: