comparison mercurial/bundlerepo.py @ 35783:c97639ad6874

bundle2: specify what capabilities will be used for We currently assume there is a symmetric relationship of bundle2 capabilities between client and server. However, this may not always be the case. We need a bundle2 capability to advertise bundle2 streaming clone support on servers to differentiate it from the existing, legacy streaming clone support. However, servers may wish to disable streaming clone support. If bundle2 capabilities were the same between client and server, a client (which may also be a server) that has disabled streaming clone support would not be able to perform a streaming clone itself! This commit introduces a "role" argument to bundle2.getrepocaps() that explicitly defines the role being performed. This will allow us (and extensions) to alter bundle2 capabilities depending on the operation being performed. Differential Revision: https://phab.mercurial-scm.org/D1923
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 20 Jan 2018 13:54:36 -0800
parents b1c9853e0775
children 87b085a4f9d1
comparison
equal deleted inserted replaced
35782:9d249f3de730 35783:c97639ad6874
541 and other.capable('bundle2')) 541 and other.capable('bundle2'))
542 if canbundle2: 542 if canbundle2:
543 kwargs = {} 543 kwargs = {}
544 kwargs[r'common'] = common 544 kwargs[r'common'] = common
545 kwargs[r'heads'] = rheads 545 kwargs[r'heads'] = rheads
546 kwargs[r'bundlecaps'] = exchange.caps20to10(repo) 546 kwargs[r'bundlecaps'] = exchange.caps20to10(repo, role='client')
547 kwargs[r'cg'] = True 547 kwargs[r'cg'] = True
548 b2 = other.getbundle('incoming', **kwargs) 548 b2 = other.getbundle('incoming', **kwargs)
549 fname = bundle = changegroup.writechunks(ui, b2._forwardchunks(), 549 fname = bundle = changegroup.writechunks(ui, b2._forwardchunks(),
550 bundlename) 550 bundlename)
551 else: 551 else: