mercurial/revset.py
changeset 49511 117dcc4a0e67
parent 49510 e02dcc625171
child 49702 c55e70bed7eb
child 49946 76c128d4de4e
--- 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]: