pull: fix bundle2 part generation
The new part generator (allowing partial pull) was unproperly installed.
--- a/hgext/evolve.py Sat Apr 11 10:35:26 2015 -0400
+++ b/hgext/evolve.py Mon Apr 20 13:36:12 2015 +0200
@@ -2642,20 +2642,28 @@
if getattr(exchange, '_getbundleobsmarkerpart', None) is not None:
@eh.wrapfunction(exchange, '_getbundleobsmarkerpart')
- def _getbundleobsmarkerpart(orig, bundler, repo, source, heads=None, common=None,
- bundlecaps=None, **kwargs):
+ def _getbundleobsmarkerpart(orig, bundler, repo, source, **kwargs):
if 'evo_obscommon' not in kwargs:
- return orig(bundler, repo, source, heads, common, bundlecaps, **kwargs)
-
+ return orig(bundler, repo, source, **kwargs)
+
+ heads = kwargs.get('heads')
if kwargs.get('obsmarkers', False):
if heads is None:
heads = repo.heads()
obscommon = kwargs.get('evo_obscommon', ())
+ assert obscommon
obsset = repo.set('::%ln - ::%ln', heads, obscommon)
subset = [c.node() for c in obsset]
markers = repo.obsstore.relevantmarkers(subset)
exchange.buildobsmarkerspart(bundler, markers)
+ @eh.uisetup
+ def installgetbundlepartgen(ui):
+ origfunc = exchange.getbundle2partsmapping['obsmarkers']
+ def newfunc(*args, **kwargs):
+ return _getbundleobsmarkerpart(origfunc, *args, **kwargs)
+ exchange.getbundle2partsmapping['obsmarkers'] = newfunc
+
@eh.wrapfunction(exchange, '_pullobsolete')
def _pullobsolete(orig, pullop):
--- a/hgext/simple4server.py Sat Apr 11 10:35:26 2015 -0400
+++ b/hgext/simple4server.py Mon Apr 20 13:36:12 2015 +0200
@@ -255,10 +255,13 @@
caps += ' _evoext_getbundle_obscommon'
return caps
-def _getbundleobsmarkerpart(orig, bundler, repo, source, heads=None, common=None,
- bundlecaps=None, **kwargs):
+def _getbundleobsmarkerpart(orig, bundler, repo, source, **kwargs):
if 'evo_obscommon' not in kwargs:
- return orig(bundler, repo, source, heads, common, bundlecaps, **kwargs)
+ return orig(bundler, repo, source, **kwargs)
+
+ heads = kwargs.get('heads')
+ if 'evo_obscommon' not in kwargs:
+ return orig(bundler, repo, source, **kwargs)
if kwargs.get('obsmarkers', False):
if heads is None:
@@ -284,6 +287,10 @@
wireproto.commands['evoext_pullobsmarkers_0'] = (srv_pullobsmarkers, '*')
# wrap module content
extensions.wrapfunction(exchange, '_pullbundle2extraprepare', _getbundleobsmarkerpart)
+ origfunc = exchange.getbundle2partsmapping['obsmarkers']
+ def newfunc(*args, **kwargs):
+ return _getbundleobsmarkerpart(origfunc, *args, **kwargs)
+ exchange.getbundle2partsmapping['obsmarkers'] = newfunc
extensions.wrapfunction(wireproto, 'capabilities', capabilities)
# wrap command content
oldcap, args = wireproto.commands['capabilities']