comparison hgext/evolve.py @ 1091:236a8e81551e

compat: use in-core encodemarkers Now exist in core witha slightly different format.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 27 Aug 2014 18:16:10 +0200
parents 4a6479395a9d
children a49f2e7a2755
comparison
equal deleted inserted replaced
1090:4a6479395a9d 1091:236a8e81551e
2335 return set([nullid]) 2335 return set([nullid])
2336 return dag.externalizeall(result) 2336 return dag.externalizeall(result)
2337 2337
2338 2338
2339 _pushkeyescape = getattr(obsolete, '_pushkeyescape', None) 2339 _pushkeyescape = getattr(obsolete, '_pushkeyescape', None)
2340 def _encodemarkersstream(fp, markers):
2341 fp.write(_pack('>B', 0))
2342 for mark in markers:
2343 fp.write(obsolete._encodeonemarker(mark))
2344 2340
2345 class pushobsmarkerStringIO(StringIO): 2341 class pushobsmarkerStringIO(StringIO):
2346 """hacky string io for progress""" 2342 """hacky string io for progress"""
2347 2343
2348 @util.propertycache 2344 @util.propertycache
2379 markers = pushop.outobsmarkers 2375 markers = pushop.outobsmarkers
2380 if not markers: 2376 if not markers:
2381 obsexcmsg(repo.ui, "no marker to push\n") 2377 obsexcmsg(repo.ui, "no marker to push\n")
2382 elif remote.capable('_evoext_pushobsmarkers_0'): 2378 elif remote.capable('_evoext_pushobsmarkers_0'):
2383 obsdata = pushobsmarkerStringIO() 2379 obsdata = pushobsmarkerStringIO()
2384 _encodemarkersstream(obsdata, markers) 2380 for chunk in obsolete.encodemarkers(markers, True):
2381 obsdata.write(chunk)
2385 obsdata.seek(0) 2382 obsdata.seek(0)
2386 obsdata.ui = repo.ui 2383 obsdata.ui = repo.ui
2387 obsexcmsg(repo.ui, "pushing %i obsolescence markers (%i bytes)\n" 2384 obsexcmsg(repo.ui, "pushing %i obsolescence markers (%i bytes)\n"
2388 % (len(markers), len(obsdata.getvalue())), 2385 % (len(markers), len(obsdata.getvalue())),
2389 True) 2386 True)
2576 revset += ' - (::%ln)' 2573 revset += ' - (::%ln)'
2577 args.append(common) 2574 args.append(common)
2578 nodes = [c.node() for c in repo.set(revset, *args)] 2575 nodes = [c.node() for c in repo.set(revset, *args)]
2579 markers = repo.obsstore.relevantmarkers(nodes) 2576 markers = repo.obsstore.relevantmarkers(nodes)
2580 obsdata = StringIO() 2577 obsdata = StringIO()
2581 _encodemarkersstream(obsdata, markers) 2578 for chunk in obsolete.encodemarkers(markers, True):
2579 obsdata.write(chunk)
2582 obsdata.seek(0) 2580 obsdata.seek(0)
2583 return obsdata 2581 return obsdata
2584 2582
2585 @eh.addattr(wireproto.wirepeer, 'evoext_pullobsmarkers_0') 2583 @eh.addattr(wireproto.wirepeer, 'evoext_pullobsmarkers_0')
2586 def client_pullobsmarkers(self, heads=None, common=None): 2584 def client_pullobsmarkers(self, heads=None, common=None):