Mercurial > public > mercurial-scm > hg-stable
diff mercurial/metadata.py @ 46726:bc2519513ae0
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Each repo will advertise the sidedata categories it requires (categories being
unique and canonical), and have a set of "computers", functions to generate
sidedata from `(repo, revlog, rev, previous_sidedata)`, for a given category.
The set of computers can be a superset of the set of the wanted categories, but
not smaller: repos are expected to be coherent in their handling of sidedata.
Differential Revision: https://phab.mercurial-scm.org/D10028
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Fri, 19 Feb 2021 10:53:27 +0100 |
parents | dde86beca388 |
children | c52c3c4cbd3f |
line wrap: on
line diff
--- a/mercurial/metadata.py Thu Feb 18 18:18:35 2021 +0100 +++ b/mercurial/metadata.py Fri Feb 19 10:53:27 2021 +0100 @@ -18,6 +18,7 @@ from . import ( error, pycompat, + requirements as requirementsmod, util, ) @@ -804,6 +805,21 @@ return encode_files_sidedata(files), files.has_copies_info +def copies_sidedata_computer(repo, revlog, rev, existing_sidedata): + return _getsidedata(repo, rev)[0] + + +def set_sidedata_spec_for_repo(repo): + if requirementsmod.COPIESSDC_REQUIREMENT in repo.requirements: + repo.register_wanted_sidedata(sidedatamod.SD_FILES) + repo.register_sidedata_computer( + b"changelog", + sidedatamod.SD_FILES, + (sidedatamod.SD_FILES,), + copies_sidedata_computer, + ) + + def getsidedataadder(srcrepo, destrepo): use_w = srcrepo.ui.configbool(b'experimental', b'worker.repository-upgrade') if pycompat.iswindows or not use_w: