Mercurial > hg
comparison mercurial/exchange.py @ 23179:6bb9533fa8fa
getbundle: send highest changegroup format supported by both side
When using bundle2, we find the common subset of supported changegroup-packers
and we pick the max of them. This allow to use generaldelta aware changegroup
through bundle2.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Fri, 17 Oct 2014 14:59:10 +0200 |
parents | 706547a14b8b |
children | 116b80d63815 |
comparison
equal
deleted
inserted
replaced
23178:5e895ed5e955 | 23179:6bb9533fa8fa |
---|---|
1184 b2caps=None, heads=None, common=None, **kwargs): | 1184 b2caps=None, heads=None, common=None, **kwargs): |
1185 """add a changegroup part to the requested bundle""" | 1185 """add a changegroup part to the requested bundle""" |
1186 cg = None | 1186 cg = None |
1187 if kwargs.get('cg', True): | 1187 if kwargs.get('cg', True): |
1188 # build changegroup bundle here. | 1188 # build changegroup bundle here. |
1189 cg = changegroup.getchangegroupraw(repo, source, heads=heads, | 1189 version = None |
1190 common=common, bundlecaps=bundlecaps) | 1190 cgversions = b2caps.get('b2x:changegroup') |
1191 if cgversions is None: | |
1192 cg = changegroup.getchangegroupraw(repo, source, heads=heads, | |
1193 common=common, | |
1194 bundlecaps=bundlecaps) | |
1195 else: | |
1196 cgversions = [v for v in cgversions if v in changegroup.packermap] | |
1197 if not cgversions: | |
1198 raise ValueError(_('no common changegroup version')) | |
1199 version = max(cgversions) | |
1200 cg = changegroup.getchangegroupraw(repo, source, heads=heads, | |
1201 common=common, | |
1202 bundlecaps=bundlecaps, | |
1203 version=version) | |
1191 | 1204 |
1192 if cg: | 1205 if cg: |
1193 bundler.newpart('b2x:changegroup', data=cg) | 1206 part = bundler.newpart('b2x:changegroup', data=cg) |
1207 if version is not None: | |
1208 part.addparam('version', version) | |
1194 | 1209 |
1195 @getbundle2partsgenerator('listkeys') | 1210 @getbundle2partsgenerator('listkeys') |
1196 def _getbundlelistkeysparts(bundler, repo, source, bundlecaps=None, | 1211 def _getbundlelistkeysparts(bundler, repo, source, bundlecaps=None, |
1197 b2caps=None, **kwargs): | 1212 b2caps=None, **kwargs): |
1198 """add parts containing listkeys namespaces to the requested bundle""" | 1213 """add parts containing listkeys namespaces to the requested bundle""" |