diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -193,21 +193,21 @@ def rev(repo, subset, x): def p1(repo, subset, x): ps = set() cl = repo.changelog - for r in getset(repo, subset, x): + for r in getset(repo, range(len(repo)), x): ps.add(cl.parentrevs(r)[0]) return [r for r in subset if r in ps] def p2(repo, subset, x): ps = set() cl = repo.changelog - for r in getset(repo, subset, x): + for r in getset(repo, range(len(repo)), x): ps.add(cl.parentrevs(r)[1]) return [r for r in subset if r in ps] def parents(repo, subset, x): ps = set() cl = repo.changelog - for r in getset(repo, subset, x): + for r in getset(repo, range(len(repo)), x): ps.update(cl.parentrevs(r)) return [r for r in subset if r in ps] @@ -238,7 +238,7 @@ def limit(repo, subset, x): def children(repo, subset, x): cs = set() cl = repo.changelog - s = set(getset(repo, subset, x)) + s = set(getset(repo, range(len(repo)), x)) for r in xrange(0, len(repo)): for p in cl.parentrevs(r): if p in s: diff --git a/tests/test-revset.t b/tests/test-revset.t --- a/tests/test-revset.t +++ b/tests/test-revset.t @@ -339,3 +339,20 @@ quoting needed 0 $ log '4::8 - 8' 4 + +issue2437 + + $ log '3 and p1(5)' + 3 + $ log '4 and p2(6)' + 4 + $ log '1 and parents(:2)' + 1 + $ log '2 and children(1:)' + 2 + $ log 'roots(all()) or roots(all())' + 0 + $ log 'heads(branch(é)) or heads(branch(é))' + 9 + $ log 'ancestors(8) and (heads(branch("-a-b-c-")) or heads(branch(é)))' + 4