Mercurial > kallithea
changeset 4772:7b7b7262e837
git: fix version detection with unexpected version string (Issue #71)
Handle version strings like 'git version 1.9.3 (Apple Git-50)'.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Wed, 21 Jan 2015 17:35:11 +0100 |
parents | 6d8a2c55b7d0 |
children | 8996b4f57dad |
files | kallithea/lib/utils.py |
diffstat | 1 files changed, 17 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/utils.py Wed Jan 21 17:35:11 2015 +0100 +++ b/kallithea/lib/utils.py Wed Jan 21 17:35:11 2015 +0100 @@ -784,7 +784,7 @@ def check_git_version(): """ Checks what version of git is installed in system, and issues a warning - if it's too old for Kallithea to properly work. + if it's too old for Kallithea to work properly. """ from kallithea import BACKENDS from kallithea.lib.vcs.backends.git.repository import GitRepository @@ -797,31 +797,23 @@ stdout, stderr = GitRepository._run_git_command('--version', _bare=True, _safe=True) - ver = (stdout.split(' ')[-1] or '').strip() or '0.0.0' - if len(ver.split('.')) > 3: - #StrictVersion needs to be only 3 element type - ver = '.'.join(ver.split('.')[:3]) - try: - _ver = StrictVersion(ver) - except ValueError: - _ver = StrictVersion('0.0.0') - stderr = traceback.format_exc() + m = re.search("\d+.\d+.\d+", stdout) + if m: + ver = StrictVersion(m.group(0)) + else: + ver = StrictVersion('0.0.0') + + req_ver = StrictVersion('1.7.4') - req_ver = '1.7.4' - to_old_git = False - if _ver < StrictVersion(req_ver): - to_old_git = True - - if 'git' in BACKENDS: - log.debug('Git executable: "%s" version detected: %s' - % (settings.GIT_EXECUTABLE_PATH, stdout)) - if stderr: - log.warning('Unable to detect git version, org error was: %r' % stderr) - elif to_old_git: - log.warning('Kallithea detected git version %s, which is too old ' - 'for the system to function properly. Make sure ' - 'its version is at least %s' % (ver, req_ver)) - return _ver + log.debug('Git executable: "%s" version %s detected: %s' + % (settings.GIT_EXECUTABLE_PATH, ver, stdout)) + if stderr: + log.warning('Error detecting git version: %r' % stderr) + elif ver < req_ver: + log.warning('Kallithea detected git version %s, which is too old ' + 'for the system to function properly. ' + 'Please upgrade to version %s or later.' % (ver, req_ver)) + return ver @decorator.decorator