D6939: sidedata: apply basic but tight security around exchange
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Tue Oct 8 00:36:47 UTC 2019
marmoute updated this revision to Diff 16943.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6939?vs=16771&id=16943
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D6939/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D6939
AFFECTED FILES
mercurial/bundle2.py
mercurial/exchange.py
CHANGE DETAILS
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1049,6 +1049,8 @@
cgpart.addparam(b'version', version)
if b'treemanifest' in pushop.repo.requirements:
cgpart.addparam(b'treemanifest', b'1')
+ if b'exp-sidedata-flag' in pushop.repo.requirements:
+ cgpart.addparam(b'exp-sidedata', b'1')
def handlereply(op):
"""extract addchangegroup returns from server reply"""
@@ -2512,6 +2514,9 @@
if b'treemanifest' in repo.requirements:
part.addparam(b'treemanifest', b'1')
+ if b'exp-sidedata-flag' in repo.requirements:
+ part.addparam(b'exp-sidedata', b'1')
+
if (
kwargs.get(r'narrow', False)
and kwargs.get(r'narrow_acl', False)
diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -1711,6 +1711,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 opts.get(b'streamv2', False):
addpartbundlestream2(bundler, repo, stream=True)
@@ -1930,7 +1932,14 @@
@parthandler(
- b'changegroup', (b'version', b'nbchanges', b'treemanifest', b'targetphase')
+ b'changegroup',
+ (
+ b'version',
+ b'nbchanges',
+ b'exp-sidedata',
+ b'treemanifest',
+ b'targetphase',
+ ),
)
def handlechangegroup(op, inpart):
"""apply a changegroup part on the repo
@@ -1965,6 +1974,14 @@
op.repo.ui, op.repo.requirements, op.repo.features
)
op.repo._writerequirements()
+
+ bundlesidedata = bool(b'exp-sidedata' in inpart.params)
+ reposidedata = bool(b'exp-sidedata-flag' in op.repo.requirements)
+ if reposidedata and not bundlesidedata:
+ msg = b"repository is using sidedata but the bundle source do not"
+ hint = b'this is currently unsupported'
+ raise error.Abort(msg, hint=hint)
+
extrakwargs = {}
targetphase = inpart.params.get(b'targetphase')
if targetphase is not None:
@@ -2551,5 +2568,7 @@
part.addparam(b'version', cgversion)
if b'treemanifest' in repo.requirements:
part.addparam(b'treemanifest', b'1')
+ if b'exp-sidedata-flag' in repo.requirements:
+ part.addparam(b'exp-sidedata', b'1')
return bundler
To: marmoute, #hg-reviewers
Cc: indygreg, martinvonz, mercurial-devel
More information about the Mercurial-devel
mailing list