diff -r 57e7a060a06f -r 46a96dd4d976 mercurial/revset.py --- a/mercurial/revset.py Sat Jun 20 16:22:10 2015 -0700 +++ b/mercurial/revset.py Mon Jun 22 10:19:12 2015 -0700 @@ -1755,9 +1755,13 @@ Changesets in set with no parent changeset in set. """ s = getset(repo, fullreposet(repo), x) - subset = subset & s# baseset([r for r in s if r in subset]) - cs = _children(repo, subset, s) - return subset - cs + parents = repo.changelog.parentrevs + def filter(r): + for p in parents(r): + if 0 <= p and p in s: + return False + return True + return subset & s.filter(filter) def sort(repo, subset, x): """``sort(set[, [-]key...])``