D6939: sidedata: apply basic but tight security around exchange
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Wed Oct 2 00:09:00 EDT 2019
marmoute updated this revision to Diff 16771.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6939?vs=16742&id=16771
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
@@ -919,6 +919,8 @@
cgpart.addparam('version', version)
if 'treemanifest' in pushop.repo.requirements:
cgpart.addparam('treemanifest', '1')
+ if 'exp-sidedata-flag' in pushop.repo.requirements:
+ cgpart.addparam('exp-sidedata', '1')
def handlereply(op):
"""extract addchangegroup returns from server reply"""
cgreplies = op.records.getreplies(cgpart.id)
@@ -2211,6 +2213,9 @@
if 'treemanifest' in repo.requirements:
part.addparam('treemanifest', '1')
+ if 'exp-sidedata-flag' in repo.requirements:
+ part.addparam('exp-sidedata', '1')
+
if (kwargs.get(r'narrow', False) and kwargs.get(r'narrow_acl', False)
and (include or exclude)):
# this is mandatory because otherwise ACL clients won't work
diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -1606,6 +1606,8 @@
if opts.get('phases') and repo.revs('%ln and secret()',
outgoing.missingheads):
part.addparam('targetphase', '%d' % phases.secret, mandatory=False)
+ if 'exp-sidedata-flag' in repo.requirements:
+ part.addparam('exp-sidedata', '1')
if opts.get('streamv2', False):
addpartbundlestream2(bundler, repo, stream=True)
@@ -1802,8 +1804,8 @@
result = -1 + changedheads
return result
- at parthandler('changegroup', ('version', 'nbchanges', 'treemanifest',
- 'targetphase'))
+ at parthandler('changegroup', ('version', 'nbchanges', 'exp-sidedata',
+ 'treemanifest', 'targetphase'))
def handlechangegroup(op, inpart):
"""apply a changegroup part on the repo
@@ -1831,6 +1833,14 @@
op.repo.svfs.options = localrepo.resolvestorevfsoptions(
op.repo.ui, op.repo.requirements, op.repo.features)
op.repo._writerequirements()
+
+ bundlesidedata = bool('exp-sidedata' in inpart.params)
+ reposidedata = bool('exp-sidedata-flag' in op.repo.requirements)
+ if reposidedata and not bundlesidedata:
+ msg = "repository is using sidedata but the bundle source do not"
+ hint = 'this is currently unsupported'
+ raise error.Abort(msg, hint=hint)
+
extrakwargs = {}
targetphase = inpart.params.get('targetphase')
if targetphase is not None:
@@ -2329,5 +2339,7 @@
part.addparam('version', cgversion)
if 'treemanifest' in repo.requirements:
part.addparam('treemanifest', '1')
+ if 'exp-sidedata-flag' in repo.requirements:
+ part.addparam('sidedata', '1')
return bundler
To: marmoute, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list