mercurial/repair.py
changeset 18040 fe8caf28d580
parent 18004 747a2f43d5d9
child 18121 f8a13f061a8a
--- 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: