diff -r f6f122f4813b -r ecdbbb6e5d06 mercurial/extensions.py --- a/mercurial/extensions.py Tue Jul 08 16:24:23 2014 -0700 +++ b/mercurial/extensions.py Tue Jun 10 13:44:37 2014 +0300 @@ -367,3 +367,16 @@ exts[ename] = doc.splitlines()[0].strip() return exts + +def moduleversion(module): + '''return version information from given module as a string''' + if (util.safehasattr(module, 'getversion') + and callable(module.getversion)): + version = module.getversion() + elif util.safehasattr(module, '__version__'): + version = module.__version__ + else: + version = '' + if isinstance(version, (list, tuple)): + version = '.'.join(str(o) for o in version) + return version