diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -232,9 +232,13 @@ def p2(repo, subset, x): return [r for r in subset if r in ps] def parents(repo, subset, x): - """``parents(set)`` - The set of all parents for all changesets in set. + """``parents([set])`` + The set of all parents for all changesets in set, or the working directory. """ + repo.ui.debug(repr(x), '\n') + if x is None: + return [r.rev() for r in repo[x].parents()] + ps = set() cl = repo.changelog for r in getset(repo, range(len(repo)), x): diff --git a/tests/test-revset-dirstate-parents.t b/tests/test-revset-dirstate-parents.t --- a/tests/test-revset-dirstate-parents.t +++ b/tests/test-revset-dirstate-parents.t @@ -21,6 +21,7 @@ null revision $ log 'p1()' $ log 'p2()' + $ log 'parents()' working dir with a single parent $ echo a > a @@ -28,6 +29,8 @@ working dir with a single parent $ log 'p1()' 0 $ log 'p2()' + $ log 'parents()' + 0 merge in progress $ echo b > b @@ -40,3 +43,6 @@ merge in progress 2 $ log 'p2()' 1 + $ log 'parents()' + 2 + 1