Index: scm.py |
diff --git a/scm.py b/scm.py |
index afc66f4429cfdd48e20b99764facc0b0fee15fb8..6281643346b5b74a2141a78237715a66927c8606 100644 |
--- a/scm.py |
+++ b/scm.py |
@@ -86,7 +86,16 @@ def determine_scm(root): |
return None |
+def only_int(val): |
+ if val.isdigit(): |
+ return int(val) |
+ else: |
+ return 0 |
+ |
+ |
class GIT(object): |
+ current_version = None |
+ |
@staticmethod |
def Capture(args, **kwargs): |
return subprocess2.check_output( |
@@ -370,23 +379,19 @@ class GIT(object): |
root = GIT.Capture(['rev-parse', '--show-cdup'], cwd=cwd).strip() |
return os.path.abspath(os.path.join(cwd, root)) |
- @staticmethod |
- def AssertVersion(min_version): |
+ @classmethod |
+ def AssertVersion(cls, min_version): |
"""Asserts git's version is at least min_version.""" |
- def only_int(val): |
- if val.isdigit(): |
- return int(val) |
- else: |
- return 0 |
- current_version = GIT.Capture(['--version']).split()[-1] |
- current_version_list = map(only_int, current_version.split('.')) |
+ if cls.current_version is None: |
+ cls.current_version = cls.Capture(['--version']).split()[-1] |
+ current_version_list = map(only_int, cls.current_version.split('.')) |
for min_ver in map(int, min_version.split('.')): |
ver = current_version_list.pop(0) |
if ver < min_ver: |
- return (False, current_version) |
+ return (False, cls.current_version) |
elif ver > min_ver: |
- return (True, current_version) |
- return (True, current_version) |
+ return (True, cls.current_version) |
+ return (True, cls.current_version) |
class SVN(object): |
@@ -924,24 +929,19 @@ class SVN(object): |
directory = parent |
return GetCasedPath(directory) |
- @staticmethod |
- def AssertVersion(min_version): |
+ @classmethod |
+ def AssertVersion(cls, min_version): |
"""Asserts svn's version is at least min_version.""" |
- def only_int(val): |
- if val.isdigit(): |
- return int(val) |
- else: |
- return 0 |
- if not SVN.current_version: |
- SVN.current_version = SVN.Capture(['--version']).split()[2] |
- current_version_list = map(only_int, SVN.current_version.split('.')) |
+ if cls.current_version is None: |
+ cls.current_version = cls.Capture(['--version']).split()[2] |
+ current_version_list = map(only_int, cls.current_version.split('.')) |
for min_ver in map(int, min_version.split('.')): |
ver = current_version_list.pop(0) |
if ver < min_ver: |
- return (False, SVN.current_version) |
+ return (False, cls.current_version) |
elif ver > min_ver: |
- return (True, SVN.current_version) |
- return (True, SVN.current_version) |
+ return (True, cls.current_version) |
+ return (True, cls.current_version) |
@staticmethod |
def Revert(repo_root, callback=None, ignore_externals=False): |