diff --git a/mercurial/revset.py b/mercurial/revset.py index 7a2bca0b1e70cccf0edf0a15dcf45088551daeb3_bWVyY3VyaWFsL3JldnNldC5weQ==..98b79c89276857fb38da975994885825b570801d_bWVyY3VyaWFsL3JldnNldC5weQ== 100644 --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -206,7 +206,8 @@ First parent of changesets in set, or the working directory. """ if x is None: - return [repo[x].parents()[0].rev()] + p = repo[x].parents()[0].rev() + return [r for r in subset if r == p] ps = set() cl = repo.changelog @@ -221,7 +222,8 @@ if x is None: ps = repo[x].parents() try: - return [ps[1].rev()] + p = ps[1].rev() + return [r for r in subset if r == p] except IndexError: return [] @@ -237,7 +239,8 @@ """ repo.ui.debug(repr(x), '\n') if x is None: - return [r.rev() for r in repo[x].parents()] + ps = tuple(p.rev() for p in repo[x].parents()) + return [r for r in subset if r in ps] ps = set() cl = repo.changelog diff --git a/tests/test-revset-dirstate-parents.t b/tests/test-revset-dirstate-parents.t index 7a2bca0b1e70cccf0edf0a15dcf45088551daeb3_dGVzdHMvdGVzdC1yZXZzZXQtZGlyc3RhdGUtcGFyZW50cy50..98b79c89276857fb38da975994885825b570801d_dGVzdHMvdGVzdC1yZXZzZXQtZGlyc3RhdGUtcGFyZW50cy50 100644 --- a/tests/test-revset-dirstate-parents.t +++ b/tests/test-revset-dirstate-parents.t @@ -14,6 +14,5 @@ $ try 'p1()' ('func', ('symbol', 'p1'), None) - -1 $ try 'p2()' ('func', ('symbol', 'p2'), None) @@ -18,5 +17,8 @@ $ try 'p2()' ('func', ('symbol', 'p2'), None) + $ try 'parents()' + ('func', ('symbol', 'parents'), None) + None null revision $ log 'p1()' @@ -28,6 +30,7 @@ $ hg ci -Aqm0 $ log 'p1()' 0 + $ log 'tag() and p1()' $ log 'p2()' $ log 'parents()' 0 @@ -31,6 +34,7 @@ $ log 'p2()' $ log 'parents()' 0 + $ log 'tag() and parents()' merge in progress $ echo b > b @@ -43,4 +47,5 @@ 2 $ log 'p2()' 1 + $ log 'tag() and p2()' $ log 'parents()' @@ -46,2 +51,3 @@ $ log 'parents()' + 1 2 @@ -47,2 +53,1 @@ 2 - 1