# HG changeset patch # User Pierre-Yves David # Date 1488886021 -3600 # Node ID ce39d0f9976dd8aa5f2142b329495f1126767e05 # Parent 994d81caec68b7774b41784b4c0170f3132625ba serveronly: give the sub extension a way to access to the 'evolve' module We keep it as clean as possible but if the extension is specified with a direct path, we have to be a bit hacky. Being able to access the whole evolve extension from the 'serveronly' extension will lift multiple constraints on how we organise the code and will allow for cleaner and clearer code. We extract a minor function into a 'utility' module to have something to depends on. diff -r 994d81caec68 -r ce39d0f9976d hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Tue Mar 07 12:10:05 2017 +0100 +++ b/hgext3rd/evolve/__init__.py Tue Mar 07 12:27:01 2017 +0100 @@ -113,9 +113,10 @@ from mercurial.node import nullid from . import ( + exchange, exthelper, - exchange, serveronly, + utility, ) @@ -124,7 +125,7 @@ # Flags for enabling optional parts of evolve commandopt = 'allnewcommands' -obsexcmsg = serveronly.obsexcmsg +obsexcmsg = utility.obsexcmsg _pack = struct.pack _unpack = struct.unpack diff -r 994d81caec68 -r ce39d0f9976d hgext3rd/evolve/exchange.py --- a/hgext3rd/evolve/exchange.py Tue Mar 07 12:10:05 2017 +0100 +++ b/hgext3rd/evolve/exchange.py Tue Mar 07 12:27:01 2017 +0100 @@ -29,10 +29,11 @@ from . import ( exthelper, serveronly, + utility, ) eh = exthelper.exthelper() -obsexcmsg = serveronly.obsexcmsg +obsexcmsg = utility.obsexcmsg def obsexcprg(ui, *args, **kwargs): topic = 'obsmarkers exchange' diff -r 994d81caec68 -r ce39d0f9976d hgext3rd/evolve/serveronly.py --- a/hgext3rd/evolve/serveronly.py Tue Mar 07 12:10:05 2017 +0100 +++ b/hgext3rd/evolve/serveronly.py Tue Mar 07 12:27:01 2017 +0100 @@ -8,12 +8,16 @@ For client side usages it is recommended to use the evolve extension for improved user interface.''' +from __future__ import absolute_import + testedwith = '3.3 3.4-rc' buglink = 'https://bz.mercurial-scm.org/' import hashlib import struct from cStringIO import StringIO +import sys +import os from mercurial import ( @@ -43,6 +47,17 @@ from mercurial import pushkey +try: + from . import utility +except ValueError as exc: + if exc.message != 'Attempted relative import in non-package': + raise + # extension imported using direct path + sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + from evolve import utility + +obsexcmsg = utility.obsexcmsg + # specific content also include the wrapping int extsetup def _nslist(orig, repo): rep = orig(repo) @@ -53,14 +68,6 @@ # End of simple4server specific content -def obsexcmsg(ui, message, important=False): - verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange', - False) - if verbose: - message = 'OBSEXC: ' + message - if important or verbose: - ui.status(message) - def _pushobsmarkers(repo, data): tr = lock = None try: diff -r 994d81caec68 -r ce39d0f9976d hgext3rd/evolve/utility.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext3rd/evolve/utility.py Tue Mar 07 12:27:01 2017 +0100 @@ -0,0 +1,14 @@ +# Various utility function for the evolve extension +# +# Copyright 2017 Pierre-Yves David +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. + +def obsexcmsg(ui, message, important=False): + verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange', + False) + if verbose: + message = 'OBSEXC: ' + message + if important or verbose: + ui.status(message)