Mercurial > hg
changeset 44045:df82c06e1a05
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
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 27 Dec 2019 21:11:33 -0800 |
parents | f3ad014b6a53 |
children | 4322de8f7016 |
files | mercurial/commands.py |
diffstat | 1 files changed, 3 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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