Mercurial > hg-stable
changeset 47237:19d4802cb304
sidedata: add a 'side-data' repository feature and use it
Most code don't really care how sidedata support is added, but it needs to know
if it is present. To achieve this. we use the `repo.features` attributes with a
new dedicated features".
Having such centralised information is more robust and will help us to remove the
sidedata requirements in a later changesets.
Differential Revision: https://phab.mercurial-scm.org/D10617
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 12:29:52 +0200 |
parents | d00177d08139 |
children | 0dedd3d063b0 |
files | mercurial/bundle2.py mercurial/exchange.py mercurial/interfaces/repository.py mercurial/localrepo.py |
diffstat | 4 files changed, 15 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bundle2.py Mon May 03 12:29:41 2021 +0200 +++ b/mercurial/bundle2.py Mon May 03 12:29:52 2021 +0200 @@ -180,6 +180,7 @@ stringutil, urlutil, ) +from .interfaces import repository urlerr = util.urlerr urlreq = util.urlreq @@ -1729,8 +1730,8 @@ part.addparam( b'targetphase', b'%d' % phases.secret, mandatory=False ) - if b'exp-sidedata-flag' in repo.requirements: - part.addparam(b'exp-sidedata', b'1') + if repository.REPO_FEATURE_SIDE_DATA in repo.features: + part.addparam(b'exp-sidedata', b'1') if opts.get(b'streamv2', False): addpartbundlestream2(bundler, repo, stream=True) @@ -2579,9 +2580,9 @@ part.addparam(b'version', cgversion) if scmutil.istreemanifest(repo): part.addparam(b'treemanifest', b'1') - if b'exp-sidedata-flag' in repo.requirements: - part.addparam(b'exp-sidedata', b'1') - wanted = format_remote_wanted_sidedata(repo) - part.addparam(b'exp-wanted-sidedata', wanted) + if repository.REPO_FEATURE_SIDE_DATA in repo.features: + part.addparam(b'exp-sidedata', b'1') + wanted = format_remote_wanted_sidedata(repo) + part.addparam(b'exp-wanted-sidedata', wanted) return bundler
--- a/mercurial/exchange.py Mon May 03 12:29:41 2021 +0200 +++ b/mercurial/exchange.py Mon May 03 12:29:52 2021 +0200 @@ -43,6 +43,7 @@ stringutil, urlutil, ) +from .interfaces import repository urlerr = util.urlerr urlreq = util.urlreq @@ -893,7 +894,7 @@ cgpart.addparam(b'version', version) if scmutil.istreemanifest(pushop.repo): cgpart.addparam(b'treemanifest', b'1') - if b'exp-sidedata-flag' in pushop.repo.requirements: + if repository.REPO_FEATURE_SIDE_DATA in pushop.repo.features: cgpart.addparam(b'exp-sidedata', b'1') def handlereply(op): @@ -2427,7 +2428,7 @@ if scmutil.istreemanifest(repo): part.addparam(b'treemanifest', b'1') - if b'exp-sidedata-flag' in repo.requirements: + if repository.REPO_FEATURE_SIDE_DATA in repo.features: part.addparam(b'exp-sidedata', b'1') sidedata = bundle2.format_remote_wanted_sidedata(repo) part.addparam(b'exp-wanted-sidedata', sidedata)
--- a/mercurial/interfaces/repository.py Mon May 03 12:29:41 2021 +0200 +++ b/mercurial/interfaces/repository.py Mon May 03 12:29:52 2021 +0200 @@ -21,6 +21,8 @@ REPO_FEATURE_LFS = b'lfs' # Repository supports being stream cloned. REPO_FEATURE_STREAM_CLONE = b'streamclone' +# Repository supports (at least) some sidedata to be stored +REPO_FEATURE_SIDE_DATA = b'side-data' # Files storage may lack data for all ancestors. REPO_FEATURE_SHALLOW_FILE_STORAGE = b'shallowfilestorage'
--- a/mercurial/localrepo.py Mon May 03 12:29:41 2021 +0200 +++ b/mercurial/localrepo.py Mon May 03 12:29:52 2021 +0200 @@ -737,6 +737,9 @@ storevfs = store.vfs storevfs.options = resolvestorevfsoptions(ui, requirements, features) + if requirementsmod.REVLOGV2_REQUIREMENT in requirements: + features.add(repository.REPO_FEATURE_SIDE_DATA) + # The cache vfs is used to manage cache files. cachevfs = vfsmod.vfs(cachepath, cacheaudited=True) cachevfs.createmode = store.createmode