diff -r f475446b4837 -r 176d1a0ce385 mercurial/obsolete.py --- a/mercurial/obsolete.py Thu May 25 19:37:07 2017 +0200 +++ b/mercurial/obsolete.py Thu May 25 19:37:29 2017 +0200 @@ -720,6 +720,7 @@ seenmarkers = set() seennodes = set(pendingnodes) precursorsmarkers = self.precursors + succsmarkers = self.successors children = self.children while pendingnodes: direct = set() @@ -727,6 +728,8 @@ direct.update(precursorsmarkers.get(current, ())) pruned = [m for m in children.get(current, ()) if not m[1]] direct.update(pruned) + pruned = [m for m in succsmarkers.get(current, ()) if not m[1]] + direct.update(pruned) direct -= seenmarkers pendingnodes = set([m[0] for m in direct]) seenmarkers |= direct