# HG changeset patch # User Martin von Zweigbergk # Date 1524117251 25200 # Node ID 72f61b9cb8e91f8477d5708862e57c32556e7b3d # Parent 3f90e6c5d140eb429232eb1418c741704a3fe986 evolve: add support for hg >= b4d85bc1 Mercurial commit b4d85bc1 deleted the wireproto module and its contents are now in various other modules, so we can not even do unchecked imports of it now. diff -r 3f90e6c5d140 -r 72f61b9cb8e9 hgext3rd/evolve/obsexchange.py --- a/hgext3rd/evolve/obsexchange.py Thu Apr 19 10:59:12 2018 +0200 +++ b/hgext3rd/evolve/obsexchange.py Wed Apr 18 22:54:11 2018 -0700 @@ -24,7 +24,6 @@ obsolete, pushkey, util, - wireproto, ) from mercurial.hgweb import common as hgwebcommon @@ -54,11 +53,13 @@ @eh.uisetup def addgetbundleargs(self): - if util.safehasattr(wireproto, 'gboptsmap'): # <= hg 4.5 - gboptsmap = wireproto.gboptsmap - else: + try: from mercurial import wireprototypes gboptsmap = wireprototypes.GETBUNDLE_ARGUMENTS + except (ImportError, AttributeError): + # <= hg 4.5 + from mercurial import wireproto + gboptsmap = wireproto.gboptsmap gboptsmap['evo_obscommon'] = 'nodes' gboptsmap['evo_missing_nodes'] = 'nodes' @@ -131,11 +132,14 @@ @eh.extsetup def extsetup_obscommon(ui): - if util.safehasattr(wireproto, 'gboptsmap'): # <= hg 4.5 + try: + from mercurial import wireprototypes, wireprotov1server + gboptsmap = wireprototypes.GETBUNDLE_ARGUMENTS + except (ImportError, AttributeError): + # <= hg 4.5 + from mercurial import wireproto gboptsmap = wireproto.gboptsmap - else: - from mercurial import wireprototypes - gboptsmap = wireprototypes.GETBUNDLE_ARGUMENTS + wireprotov1server = wireproto gboptsmap['evo_obscommon'] = 'nodes' # wrap module content @@ -145,13 +149,14 @@ return _getbundleobsmarkerpart(origfunc, *args, **kwargs) exchange.getbundle2partsmapping['obsmarkers'] = newfunc - extensions.wrapfunction(wireproto, 'capabilities', _obscommon_capabilities) + extensions.wrapfunction(wireprotov1server, 'capabilities', + _obscommon_capabilities) # wrap command content - oldcap, args = wireproto.commands['capabilities'] + oldcap, args = wireprotov1server.commands['capabilities'] def newcap(repo, proto): return _obscommon_capabilities(oldcap, repo, proto) - wireproto.commands['capabilities'] = (newcap, args) + wireprotov1server.commands['capabilities'] = (newcap, args) def _pushobsmarkers(repo, data): tr = lock = None @@ -174,7 +179,12 @@ data = fp.getvalue() fp.close() _pushobsmarkers(repo, data) - return wireproto.pushres(0) + try: + from mercurial import wireprototypes + wireprototypes.pushres # force demandimport + except (ImportError, AttributeError): + from mercurial import wireproto as wireprototypes + return wireprototypes.pushres(0) def _getobsmarkersstream(repo, heads=None, common=None): """Get a binary stream for all markers relevant to `:: - ::` @@ -206,17 +216,23 @@ Serves relevant to changeset between heads and common. The stream is prefix by a -string- representation of an integer. This integer is the size of the stream.""" - opts = wireproto.options('', ['heads', 'common'], others) + try: + from mercurial import wireprototypes, wireprotov1server + wireprototypes.pushres # force demandimport + except (ImportError, AttributeError): + from mercurial import wireproto as wireprototypes + wireprotov1server = wireprototypes + opts = wireprotov1server.options('', ['heads', 'common'], others) for k, v in opts.iteritems(): if k in ('heads', 'common'): - opts[k] = wireproto.decodelist(v) + opts[k] = wireprototypes.decodelist(v) obsdata = _getobsmarkersstream(repo, **opts) finaldata = StringIO() obsdata = obsdata.getvalue() finaldata.write('%20i' % len(obsdata)) finaldata.write(obsdata) finaldata.seek(0) - return wireproto.streamres(reader=finaldata, v1compressible=True) + return wireprototypes.streamres(reader=finaldata, v1compressible=True) abortmsg = "won't exchange obsmarkers through pushkey" hint = "upgrade your client or server to use the bundle2 protocol"