diff --git a/git_command.py b/git_command.py index 89b681e1..354fc715 100644 --- a/git_command.py +++ b/git_command.py @@ -21,6 +21,7 @@ import tempfile from signal import SIGTERM from error import GitError from trace import REPO_TRACE, IsTrace, Trace +from wrapper import Wrapper GIT = 'git' MIN_GIT_VERSION = (1, 5, 4) @@ -84,19 +85,10 @@ class _GitCall(object): def version_tuple(self): global _git_version - if _git_version is None: ver_str = git.version().decode('utf-8') - if ver_str.startswith('git version '): - num_ver_str = ver_str[len('git version '):].strip().split('-')[0] - to_tuple = [] - for num_str in num_ver_str.split('.')[:3]: - if num_str.isdigit(): - to_tuple.append(int(num_str)) - else: - to_tuple.append(0) - _git_version = tuple(to_tuple) - else: + _git_version = Wrapper().ParseGitVersion(ver_str) + if _git_version is None: print('fatal: "%s" unsupported' % ver_str, file=sys.stderr) sys.exit(1) return _git_version diff --git a/repo b/repo index 56d784fb..1587fef4 100755 --- a/repo +++ b/repo @@ -278,6 +278,20 @@ def _Init(args): raise +def ParseGitVersion(ver_str): + if not ver_str.startswith('git version '): + return None + + num_ver_str = ver_str[len('git version '):].strip().split('-')[0] + to_tuple = [] + for num_str in num_ver_str.split('.')[:3]: + if num_str.isdigit(): + to_tuple.append(int(num_str)) + else: + to_tuple.append(0) + return tuple(to_tuple) + + def _CheckGitVersion(): cmd = [GIT, '--version'] try: @@ -295,12 +309,11 @@ def _CheckGitVersion(): proc.stdout.close() proc.wait() - if not ver_str.startswith('git version '): + ver_act = ParseGitVersion(ver_str) + if ver_act is None: _print('error: "%s" unsupported' % ver_str, file=sys.stderr) raise CloneFailure() - ver_str = ver_str[len('git version '):].strip() - ver_act = tuple(map(int, ver_str.split('.')[0:3])) if ver_act < MIN_GIT_VERSION: need = '.'.join(map(str, MIN_GIT_VERSION)) _print('fatal: git %s or later required' % need, file=sys.stderr)