comparison mercurial/exchange.py @ 23177:706547a14b8b

changegroup: introduce "raw" versions of some commands The commands getchangegroup, getlocalchangegroup and getsubset now each have a version ending in -raw. The raw versions return the chunk generator from the changegroup packer directly, without wrapping it in a chunkbuffer and unpacker. This avoids extra chunkbuffers in the bundle2 code path. Also, the raw versions can be extended to support alternative packers in the future, to be used from bundle2.
author Sune Foldager <cryo@cyanite.org>
date Fri, 17 Oct 2014 14:41:02 +0200
parents e53f6b72a0e4
children 6bb9533fa8fa
comparison
equal deleted inserted replaced
23176:329c6b4414ae 23177:706547a14b8b
443 pushop.repo.prepushoutgoinghooks(pushop.repo, 443 pushop.repo.prepushoutgoinghooks(pushop.repo,
444 pushop.remote, 444 pushop.remote,
445 pushop.outgoing) 445 pushop.outgoing)
446 if not pushop.force: 446 if not pushop.force:
447 bundler.newpart('B2X:CHECK:HEADS', data=iter(pushop.remoteheads)) 447 bundler.newpart('B2X:CHECK:HEADS', data=iter(pushop.remoteheads))
448 cg = changegroup.getlocalchangegroup(pushop.repo, 'push', pushop.outgoing) 448 cg = changegroup.getlocalchangegroupraw(pushop.repo, 'push',
449 cgpart = bundler.newpart('B2X:CHANGEGROUP', data=cg.getchunks()) 449 pushop.outgoing)
450 cgpart = bundler.newpart('B2X:CHANGEGROUP', data=cg)
450 def handlereply(op): 451 def handlereply(op):
451 """extract addchangegroup returns from server reply""" 452 """extract addchangegroup returns from server reply"""
452 cgreplies = op.records.getreplies(cgpart.id) 453 cgreplies = op.records.getreplies(cgpart.id)
453 assert len(cgreplies['changegroup']) == 1 454 assert len(cgreplies['changegroup']) == 1
454 pushop.cgresult = cgreplies['changegroup'][0]['return'] 455 pushop.cgresult = cgreplies['changegroup'][0]['return']
1183 b2caps=None, heads=None, common=None, **kwargs): 1184 b2caps=None, heads=None, common=None, **kwargs):
1184 """add a changegroup part to the requested bundle""" 1185 """add a changegroup part to the requested bundle"""
1185 cg = None 1186 cg = None
1186 if kwargs.get('cg', True): 1187 if kwargs.get('cg', True):
1187 # build changegroup bundle here. 1188 # build changegroup bundle here.
1188 cg = changegroup.getchangegroup(repo, source, heads=heads, 1189 cg = changegroup.getchangegroupraw(repo, source, heads=heads,
1189 common=common, bundlecaps=bundlecaps) 1190 common=common, bundlecaps=bundlecaps)
1190 1191
1191 if cg: 1192 if cg:
1192 bundler.newpart('b2x:changegroup', data=cg.getchunks()) 1193 bundler.newpart('b2x:changegroup', data=cg)
1193 1194
1194 @getbundle2partsgenerator('listkeys') 1195 @getbundle2partsgenerator('listkeys')
1195 def _getbundlelistkeysparts(bundler, repo, source, bundlecaps=None, 1196 def _getbundlelistkeysparts(bundler, repo, source, bundlecaps=None,
1196 b2caps=None, **kwargs): 1197 b2caps=None, **kwargs):
1197 """add parts containing listkeys namespaces to the requested bundle""" 1198 """add parts containing listkeys namespaces to the requested bundle"""