mercurial/commands.py
changeset 49442 816236523765
parent 49440 a0b57cabc245
child 49498 f2b1bc19ce90
--- a/mercurial/commands.py	Tue Aug 23 17:31:19 2022 -0400
+++ b/mercurial/commands.py	Tue Aug 23 17:31:27 2022 -0400
@@ -1035,7 +1035,14 @@
     state = hbisect.load_state(repo)
 
     if rev:
-        nodes = [repo.changelog.node(i) for i in logcmdutil.revrange(repo, rev)]
+        revs = logcmdutil.revrange(repo, rev)
+        goodnodes = state[b'good']
+        badnodes = state[b'bad']
+        if goodnodes and badnodes:
+            candidates = repo.revs(b'(%ln)::(%ln)', goodnodes, badnodes)
+            candidates += repo.revs(b'(%ln)::(%ln)', badnodes, goodnodes)
+            revs = candidates & revs
+        nodes = [repo.changelog.node(i) for i in revs]
     else:
         nodes = [repo.lookup(b'.')]