--- a/hgext/evolve.py Fri Aug 29 16:13:01 2014 +0200
+++ b/hgext/evolve.py Fri Aug 29 16:13:19 2014 +0200
@@ -2494,7 +2494,33 @@
@eh.uisetup
def addgetbundleargs(self):
- gboptsmap['evo_obscommon'] = 'plain'
+ gboptsmap['evo_obscommon'] = 'nodes'
+
+@eh.wrapfunction(exchange, '_pullbundle2extraprepare')
+def _addobscommontob2pull(orig, pullop, kwargs):
+ ret = orig(pullop, kwargs)
+ if 'obsmarkers' in kwargs and pullop.remote.capable('_evoext_getbundle_obscommon'):
+ boundaries = _buildpullobsmarkersboundaries(pullop)
+ common = boundaries['common']
+ if common != [nullid]:
+ kwargs['evo_obscommon'] = common
+ return ret
+
+@eh.wrapfunction(exchange, '_getbundleobsmarkerpart')
+def _getbundleobsmarkerpart(orig, bundler, repo, source, heads=None, common=None,
+ bundlecaps=None, **kwargs):
+ if 'evo_obscommon' not in kwargs:
+ return orig(bundler, repo, source, heads, common, bundlecaps, **kwargs)
+
+ if kwargs.get('obsmarkers', False):
+ if heads is None:
+ heads = repo.heads()
+ obscommon = kwargs.get('evo_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.wrapfunction(exchange, '_pullobsolete')
def _pullobsolete(orig, pullop):