# HG changeset patch # User Pierre-Yves David # Date 2017-05-19 10:35:14 # Node ID 8fb5f452e69ce684a4a1b7b5d151a043222710db # Parent ab5f5429e3d2332b9b0e37015630e11dbef75065 obscheckhead: skip context creation to test phase On repository with many many heads, this is called often enough to show an overhead to appears in some profile. So we skip the 'changectx' creation to test the node phases. diff --git a/mercurial/discovery.py b/mercurial/discovery.py --- a/mercurial/discovery.py +++ b/mercurial/discovery.py @@ -431,6 +431,7 @@ def _postprocessobsolete(pushop, futurec repo = pushop.repo unfi = repo.unfiltered() tonode = unfi.changelog.node + torev = unfi.changelog.rev public = phases.public getphase = unfi._phasecache.phase ispublic = (lambda r: getphase(unfi, r) == public) @@ -460,8 +461,7 @@ def _postprocessobsolete(pushop, futurec while localcandidate: nh = localcandidate.pop() # run this check early to skip the evaluation of the whole branch - if (nh in futurecommon - or unfi[nh].phase() <= public): + if (nh in futurecommon or ispublic(torev(nh))): newhs.add(nh) continue