diff -r e02dcc625171 -r 117dcc4a0e67 mercurial/revset.py --- a/mercurial/revset.py Mon Oct 03 17:24:52 2022 -0400 +++ b/mercurial/revset.py Tue Oct 04 12:34:50 2022 -0400 @@ -2474,10 +2474,20 @@ return revs elif keyflags[0][0] == b"topo": firstbranch = () + parentrevs = repo.changelog.parentrevs + parentsfunc = parentrevs + if wdirrev in revs: + + def parentsfunc(r): + try: + return parentrevs(r) + except error.WdirUnsupported: + return [p.rev() for p in repo[None].parents()] + if b'topo.firstbranch' in opts: firstbranch = getset(repo, subset, opts[b'topo.firstbranch']) revs = baseset( - dagop.toposort(revs, repo.changelog.parentrevs, firstbranch), + dagop.toposort(revs, parentsfunc, firstbranch), istopo=True, ) if keyflags[0][1]: