# HG changeset patch # User Pierre-Yves David # Date 2012-08-31 21:27:26 # Node ID 7c865f30e2b84fd4febd0caf7559e18365354da0 # Parent 1fc45b9a130016639e50c2126915f91610a4a4c8 strip: fix revset usage (issue3604) The `repair` code builds a giant revset query instead of using the "%lr" idiom. It is inefficient and crash when the number of stripped changeset is too big. This changeset replaces the bad code by a better revset usage. diff --git a/mercurial/repair.py b/mercurial/repair.py --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -111,9 +111,8 @@ def strip(ui, repo, nodelist, backup="al saverevs.difference_update(descendants) savebases = [cl.node(r) for r in saverevs] stripbases = [cl.node(r) for r in tostrip] - rset = ' or '.join([str(r) for r in tostrip]) - newbmtarget = repo.revs('sort(heads(ancestors(%r) - (%r)), -rev)', - rset, rset) + newbmtarget = repo.revs('sort(heads((::%ld) - (%ld)), -rev)', + tostrip, tostrip) if newbmtarget: newbmtarget = newbmtarget[0] else: