Mercurial > public > mercurial-scm > hg-stable
diff mercurial/repoview.py @ 45114:e2d17974a869
phases: provide a test and accessor for non-public phase roots
This decouples users from the implementation details of the phasecache.
Also document a historic artifact about the stored phaseroots.
Differential Revision: https://phab.mercurial-scm.org/D8694
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Tue, 07 Jul 2020 21:45:10 +0200 |
parents | d4c2221240a6 |
children | 672ad1f6eeb8 |
line wrap: on
line diff
--- a/mercurial/repoview.py Wed Jun 24 17:53:44 2020 +0200 +++ b/mercurial/repoview.py Tue Jul 07 21:45:10 2020 +0200 @@ -129,7 +129,7 @@ def computemutable(repo, visibilityexceptions=None): assert not repo.changelog.filteredrevs # fast check to avoid revset call on huge repo - if any(repo._phasecache.phaseroots[1:]): + if repo._phasecache.hasnonpublicphases(repo): getphase = repo._phasecache.phase maymutable = filterrevs(repo, b'base') return frozenset(r for r in maymutable if getphase(repo, r)) @@ -154,9 +154,9 @@ assert not repo.changelog.filteredrevs cl = repo.changelog firstmutable = len(cl) - for roots in repo._phasecache.phaseroots[1:]: - if roots: - firstmutable = min(firstmutable, min(cl.rev(r) for r in roots)) + roots = repo._phasecache.nonpublicphaseroots(repo) + if roots: + firstmutable = min(firstmutable, min(cl.rev(r) for r in roots)) # protect from nullrev root firstmutable = max(0, firstmutable) return frozenset(pycompat.xrange(firstmutable, len(cl)))