# HG changeset patch # User Pierre-Yves David # Date 1660666842 -7200 # Node ID b57c95a0f5f95c381626a955996070507177c6eb # Parent cfff73cab721718de9f31ee042a669ec620e2a1c phase: introduce a dedicated function to check for the archived phase The internal-phase is "ready to use" since its introduce. However, some question remains around the `archived` phase. So it seem safer to move them to separated configuration and requirements. This changeset is a first of a small series doing this. diff -r cfff73cab721 -r b57c95a0f5f9 mercurial/phases.py --- a/mercurial/phases.py Wed Apr 20 19:24:39 2022 +0200 +++ b/mercurial/phases.py Tue Aug 16 18:20:42 2022 +0200 @@ -178,6 +178,12 @@ return requirements.INTERNAL_PHASE_REQUIREMENT in repo.requirements +def supportarchived(repo): + # type: (localrepo.localrepository) -> bool + """True if the archived phase can be used on a repository""" + return requirements.INTERNAL_PHASE_REQUIREMENT in repo.requirements + + def _readroots(repo, phasedefaults=None): # type: (localrepo.localrepository, Optional[Phasedefaults]) -> Tuple[Phaseroots, bool] """Read phase roots from disk @@ -642,7 +648,12 @@ # phaseroots values, replace them. if revs is None: revs = [] - if targetphase in (archived, internal) and not supportinternal(repo): + if ( + targetphase == internal + and not supportinternal(repo) + or targetphase == archived + and not supportarchived(repo) + ): name = phasenames[targetphase] msg = b'this repository does not support the %s phase' % name raise error.ProgrammingError(msg) diff -r cfff73cab721 -r b57c95a0f5f9 mercurial/scmutil.py --- a/mercurial/scmutil.py Wed Apr 20 19:24:39 2022 +0200 +++ b/mercurial/scmutil.py Tue Aug 16 18:20:42 2022 +0200 @@ -1191,7 +1191,7 @@ obsolete.createmarkers( repo, rels, operation=operation, metadata=metadata ) - elif phases.supportinternal(repo) and mayusearchived: + elif phases.supportarchived(repo) and mayusearchived: # this assume we do not have "unstable" nodes above the cleaned ones allreplaced = set() for ns in replacements.keys():