예제 #1
0
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()))
예제 #2
0
 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
예제 #3
0
파일: hgcia.py 프로젝트: onecityuni/cia-vc
    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
예제 #4
0
파일: hgcia.py 프로젝트: Justasic/cia-vc
    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
예제 #5
0
#
# 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
예제 #6
0
# 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
예제 #7
0
#
# 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 '