Mercurial > evolve
diff hgext/simple4server.py @ 822:5f5d269278e9
exchange: add the pushmarker wireproto command to simple4server
This will allow simple server side support.
(yes, code duplication is bad, I won't do it too much mom)
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Fri, 28 Feb 2014 00:55:34 -0800 |
parents | e6e47c432ffd |
children | bee5e1105e6c |
line wrap: on
line diff
--- a/hgext/simple4server.py Fri Feb 28 00:40:29 2014 -0800 +++ b/hgext/simple4server.py Fri Feb 28 00:55:34 2014 -0800 @@ -10,3 +10,36 @@ import mercurial.obsolete mercurial.obsolete._enabled = True + +from mercurial import wireproto +from mercurial import extension + +def srv_pushobsmarkers(repo, proto): + """wireprotocol command""" + fp = StringIO() + proto.redirect() + proto.getfile(fp) + data = fp.getvalue() + fp.close() + lock = repo.lock() + try: + tr = repo.transaction('pushkey: obsolete markers') + try: + repo.obsstore.mergemarkers(tr, data) + tr.close() + finally: + tr.release() + finally: + lock.release() + return wireproto.pushres(0) + +def capabilities(orig, repo, proto): + """wrapper to advertise new capability""" + caps = orig(repo, proto) + if obsolete._enabled: + caps += ' _evoext_pushobsmarkers_0' + return caps + +def extsetup(ui): + wireproto.commands['evoext_pushobsmarkers_0'] = (srv_pushobsmarkers, '') + extensions.wrapfunction(wireproto, 'capabilities', capabilities)