Mercurial > public > mercurial-scm > hg-stable
diff mercurial/exchange.py @ 21989:bdb6d97f0a04
getbundle: add a ``cg`` boolean argument to control changegroup inclusion
The ``getbundle`` function was initially design to return a changegroup bundle.
However, bundle2 allows transmitting a wide range of data. Some bundle2
requests may not include a changegroup at all.
Before this changeset, the client would request a changegroup for
``heads=[nullid]`` and receive an empty changegroup.
We introduce an official boolean parameter, ``cg``, that can be set
to false to disable changegroup generation on getbundle. A new bundle2
capability is introduced to let the client know.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Sat, 31 May 2014 16:48:29 -0700 |
parents | dab31290c7eb |
children | 71083b020b4a |
line wrap: on
line diff
--- a/mercurial/exchange.py Thu May 22 17:20:52 2014 -0700 +++ b/mercurial/exchange.py Sat May 31 16:48:29 2014 -0700 @@ -726,9 +726,13 @@ The implementation is at a very early stage and will get massive rework when the API of bundle is refined. """ - # build changegroup bundle here. - cg = changegroup.getbundle(repo, source, heads=heads, - common=common, bundlecaps=bundlecaps) + cg = None + if kwargs.get('cg', True): + # build changegroup bundle here. + cg = changegroup.getbundle(repo, source, heads=heads, + common=common, bundlecaps=bundlecaps) + elif 'HG2X' not in bundlecaps: + raise ValueError(_('request for bundle10 must include changegroup')) if bundlecaps is None or 'HG2X' not in bundlecaps: if kwargs: raise ValueError(_('unsupported getbundle arguments: %s')