diff --git a/mercurial/interfaces/repository.py b/mercurial/interfaces/repository.py --- a/mercurial/interfaces/repository.py +++ b/mercurial/interfaces/repository.py @@ -15,6 +15,9 @@ # we should move this to just "narrow" or similar. NARROW_REQUIREMENT = b'narrowhg-experimental' +# Enables sparse working directory usage +SPARSE_REQUIREMENT = b'exp-sparse' + # Local repository feature string. # Revlogs are being used for file storage. diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -816,7 +816,7 @@ ``error.RepoError`` should be raised on failure. """ - if b'exp-sparse' in requirements and not sparse.enabled: + if repository.SPARSE_REQUIREMENT in requirements and not sparse.enabled: raise error.RepoError( _( b'repository is using sparse feature but ' @@ -1067,7 +1067,7 @@ b'shared', b'relshared', b'dotencode', - b'exp-sparse', + repository.SPARSE_REQUIREMENT, b'internal-phase', } diff --git a/mercurial/sparse.py b/mercurial/sparse.py --- a/mercurial/sparse.py +++ b/mercurial/sparse.py @@ -24,8 +24,10 @@ scmutil, util, ) +from .interfaces import repository from .utils import hashutil + # Whether sparse features are enabled. This variable is intended to be # temporary to facilitate porting sparse to core. It should eventually be # a per-repo option, possibly a repo requirement. @@ -606,11 +608,11 @@ # updated. But this requires massive rework to matcher() and its # consumers. - if b'exp-sparse' in oldrequires and removing: - repo.requirements.discard(b'exp-sparse') + if repository.SPARSE_REQUIREMENT in oldrequires and removing: + repo.requirements.discard(repository.SPARSE_REQUIREMENT) scmutil.writereporequirements(repo) - elif b'exp-sparse' not in oldrequires: - repo.requirements.add(b'exp-sparse') + elif repository.SPARSE_REQUIREMENT not in oldrequires: + repo.requirements.add(repository.SPARSE_REQUIREMENT) scmutil.writereporequirements(repo) try: