# HG changeset patch # User Pierre-Yves David # Date 1428097072 25200 # Node ID ad6dea5d96f219ab4cdd12155081b2ba1879dbe6 # Parent cde57a8d8fe712942b71db02eb764e3c3f4bb3e3 repoview: skip public parent earlier in _getstatichidden Public changeset have nothing to offer regarding hidden changeset. Lets not add them to the heap at all. diff -r cde57a8d8fe7 -r ad6dea5d96f2 mercurial/repoview.py --- a/mercurial/repoview.py Fri Apr 03 14:36:05 2015 -0700 +++ b/mercurial/repoview.py Fri Apr 03 14:37:52 2015 -0700 @@ -45,9 +45,6 @@ heappush = heapq.heappush while heap: rev = -heappop(heap) - # Skip nodes which are public (guaranteed to not be hidden) - if not getphase(repo, rev): - continue # All children have been processed so at that point, if no children # removed 'rev' from the 'hidden' set, 'rev' is going to be hidden. blocker = rev not in hidden @@ -57,7 +54,9 @@ if blocker: # If visible, ensure parent will be visible too hidden.discard(parent) - heappush(heap, -parent) + # Skip nodes which are public (guaranteed to not be hidden) + if getphase(repo, rev): + heappush(heap, -parent) return hidden def _getdynamicblockers(repo):