# HG changeset patch # User Martin von Zweigbergk # Date 1577509893 28800 # Node ID df82c06e1a05f5d4dfd14dbe9567954cf342036f # Parent f3ad014b6a538347e972c71891ebdda99a7c4ec3 graft: don't remove from a list in a loop This addresses a TODO added in a1381eea7c7d (graft: do not use `.remove` on a smart set (regression), 2014-04-28). I couldn't measure any speedup. Differential Revision: https://phab.mercurial-scm.org/D7805 diff -r f3ad014b6a53 -r df82c06e1a05 mercurial/commands.py --- a/mercurial/commands.py Fri Dec 27 22:40:52 2019 -0800 +++ b/mercurial/commands.py Fri Dec 27 21:11:33 2019 -0800 @@ -3082,14 +3082,13 @@ crev = repo[b'.'].rev() ancestors = repo.changelog.ancestors([crev], inclusive=True) # XXX make this lazy in the future - # don't mutate while iterating, create a copy - for rev in list(revs): + for rev in revs: if rev in ancestors: ui.warn( _(b'skipping ancestor revision %d:%s\n') % (rev, repo[rev]) ) - # XXX remove on list is slow - revs.remove(rev) + revs = [r for r in revs if r not in ancestors] + if not revs: return -1