# HG changeset patch # User Pierre-Yves David # Date 1495190114 -7200 # 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 -r ab5f5429e3d2 -r 8fb5f452e69c mercurial/discovery.py --- a/mercurial/discovery.py Fri May 19 02:44:30 2017 +0200 +++ b/mercurial/discovery.py Fri May 19 12:35:14 2017 +0200 @@ -431,6 +431,7 @@ 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 @@ 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