diff -r 3cfaace0441e -r 177774e4b04a mercurial/commands.py --- a/mercurial/commands.py Thu Apr 04 20:22:29 2013 -0700 +++ b/mercurial/commands.py Sat Apr 06 20:05:17 2013 -0700 @@ -2917,9 +2917,13 @@ return -1 # check for ancestors of dest branch - for rev in repo.revs('::. and %ld', revs): - ui.warn(_('skipping ancestor revision %s\n') % rev) - revs.remove(rev) + crev = repo['.'].rev() + ancestors = repo.changelog.ancestors([crev], inclusive=True) + # don't mutate while iterating, create a copy + for rev in list(revs): + if rev in ancestors: + ui.warn(_('skipping ancestor revision %s\n') % rev) + revs.remove(rev) if not revs: return -1