repoview: skip public parent earlier in _getstatichidden
authorPierre-Yves David <pierre-yves.david@fb.com>
Fri, 03 Apr 2015 14:37:52 -0700
changeset 24619 ad6dea5d96f2
parent 24618 cde57a8d8fe7
child 24620 7c6f9097e2e0
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.
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):