def check_version(): '''Check that we're running on a suitable version of Mercurial''' def versionstring(versions): '''return the list, versions, as a vaguely grammatical string''' if len(versions) > 1: return "%s or %s" % (', '.join(versions[0:-1]), versions[-1]) else: return versions[0] if version.get_version() not in GOOD_VERSIONS: raise VersionMismatch( "Scm expects Mercurial version %s, " "actual version is %s" % (versionstring(GOOD_VERSIONS), version.get_version()))
def get_repository(self, type, dir, params): """Return a `MercurialRepository`""" if not self._version: try: from mercurial.version import get_version self._version = get_version() except ImportError: # gone in Mercurial 1.2 (hg:9626819b2e3d) from mercurial.util import version self._version = version() # development version assumed to be always the ''newest'' one, # i.e. old development version won't be supported self._version_info = (999, 0, 0) m = re.match(r'(\d+)\.(\d+)(?:\.(\d+))?', self._version or '') if m: self._version_info = tuple([int(n or 0) for n in m.groups()]) self.env.systeminfo.append(('Mercurial', self._version)) options = {} for key, val in self.config.options(type): options[key] = val options.update(params) if not self.ui: self._setup_ui(options.get('hgrc')) repos = MercurialRepository(dir, options, self.log, self.ui) repos.version_info = self._version_info return repos
def xml(self): n = short(self.ctx.node()) src = self.sourceelem(self.cia.project, module=self.cia.module, branch=self.ctx.branch()) # unix timestamp dt = self.ctx.date() timestamp = dt[0] author = saxutils.escape(self.ctx.user()) rev = '%d:%s' % (self.ctx.rev(), n) log = self.ctx.description() if self.cia.diffstat: log = '%s\n-- \n%s' % (log, self.diffstat()) log = saxutils.escape(log) url = self.url and '<url>%s/rev/%s</url>' % (saxutils.escape( self.url), n) or '' files = '\n'.join([self.fileelem(f) for f in self.ctx.files()]) msg = ''' <message> <generator> <name>Mercurial</name> <version>%s</version> <url>%s</url> </generator> %s <body> <commit> <author>%s</author> <version>%s</version> <log>%s</log> %s <files>%s</files> </commit> </body> <timestamp>%d</timestamp> </message> ''' % (version.get_version(), saxutils.escape(HGCIA_URL), src, author, rev, log, url, files, timestamp) return msg
def xml(self): n = short(self.ctx.node()) src = self.sourceelem(self.cia.project, module=self.cia.module, branch=self.ctx.branch()) # unix timestamp dt = self.ctx.date() timestamp = dt[0] author = saxutils.escape(self.ctx.user()) rev = '%d:%s' % (self.ctx.rev(), n) log = self.ctx.description() if self.cia.diffstat: log = '%s\n-- \n%s' % (log, self.diffstat()) log = saxutils.escape(log) url = self.url and '<url>%s/rev/%s</url>' % (saxutils.escape(self.url), n) or '' files = '\n'.join([self.fileelem(f) for f in self.ctx.files()]) msg = ''' <message> <generator> <name>Mercurial</name> <version>%s</version> <url>%s</url> </generator> %s <body> <commit> <author>%s</author> <version>%s</version> <log>%s</log> %s <files>%s</files> </commit> </body> <timestamp>%d</timestamp> </message> ''' % (version.get_version(), saxutils.escape(HGCIA_URL), src, author, rev, log, url, files, timestamp) return msg
# # Copyright 2009 Steve Borho <*****@*****.**> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2, incorporated herein by reference. import re try: # post 1.1.2 from mercurial import util hgversion = util.version() except AttributeError: # <= 1.1.2 from mercurial import version hgversion = version.get_version() def checkhgversion(v): """range check the Mercurial version""" reqver = ['2', '6'] v = v.split('+')[0] if not v or v == 'unknown' or len(v) >= 12: # can't make any intelligent decisions about unknown or hashes return vers = re.split(r'\.|-', v)[:2] if vers == reqver or len(vers) < 2: return nextver = map(str, divmod(int(reqver[0]) * 10 + int(reqver[1]) + 1, 10)) if vers == nextver: return
# with logilab-common. If not, see <http://www.gnu.org/licenses/>. """mercurial utilities (mercurial should be installed)""" __docformat__ = "restructuredtext en" import os import sys import os.path as osp try: from mercurial.error import RepoError from mercurial.__version__ import version as hg_version except ImportError: from mercurial.repo import RepoError from mercurial.version import get_version hg_version = get_version() from mercurial.hg import repository as Repository from mercurial.ui import ui as Ui from mercurial.node import short try: # mercurial >= 1.2 (?) from mercurial.cmdutil import walkchangerevs except ImportError, ex: from mercurial.commands import walkchangerevs try: # mercurial >= 1.1 (.1?) from mercurial.util import cachefunc except ImportError, ex: def cachefunc(func): return func
# # Copyright 2009 Steve Borho <*****@*****.**> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2, incorporated herein by reference. import re try: # post 1.1.2 from mercurial import util hgversion = util.version() except AttributeError: # <= 1.1.2 from mercurial import version hgversion = version.get_version() def checkhgversion(v): """range check the Mercurial version""" reqver = ['2', '6'] v = v.split('+')[0] if not v or v == 'unknown' or len(v) >= 12: # can't make any intelligent decisions about unknown or hashes return vers = re.split(r'\.|-', v)[:2] if vers == reqver or len(vers) < 2: return nextver = map(str, divmod(int(reqver[0]) * 10 + int(reqver[1]) + 1, 10)) if vers == nextver: return return (('This version of TortoiseHg requires Mercurial '