Changeset f24965c in trac.git
- Timestamp:
- May 31, 2021, 10:01:04 PM (3 years ago)
- Branches:
- 1.6-stable, trunk
- Children:
- 2a99a56
- Parents:
- 3f72907
- Location:
- tracopt/versioncontrol/git
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
tracopt/versioncontrol/git/PyGIT.py
r3f72907 rf24965c 27 27 28 28 from trac.core import TracBaseError 29 from trac.util import terminate29 from trac.util import as_int, terminate 30 30 from trac.util.compat import close_fds 31 31 from trac.util.datefmt import time_now … … 333 333 def git_version(git_bin='git'): 334 334 GIT_VERSION_MIN_REQUIRED = (1, 5, 6) 335 g = GitCore(git_bin=git_bin) 336 # 'version' has usually at least 3 numeric version 337 # components, e.g.:: 338 # 1.5.6.2 339 # 1.5.6.3.230.g2db511 340 # 1.5.6.GIT 335 341 try: 336 g = GitCore(git_bin=git_bin) 337 [v] = g.version().splitlines() 338 version = v.strip().split()[2] 339 # 'version' has usually at least 3 numeric version 340 # components, e.g.:: 341 # 1.5.4.2 342 # 1.5.4.3.230.g2db511 343 # 1.5.4.GIT 344 345 def try_int(s): 346 try: 347 return int(s) 348 except ValueError: 349 return s 350 351 split_version = tuple(map(try_int, version.split(b'.'))) 352 353 result = {} 354 result['v_str'] = version 355 result['v_tuple'] = split_version 356 result['v_min_tuple'] = GIT_VERSION_MIN_REQUIRED 357 result['v_min_str'] = ".".join(map(str, GIT_VERSION_MIN_REQUIRED)) 358 result['v_compatible'] = split_version >= GIT_VERSION_MIN_REQUIRED 359 return result 360 342 v = g.version() 343 m = re.match(b'git version (.*)\n$', v) 344 version = str(m.group(1), 'utf-8') 345 split_version = tuple(as_int(s, s) for s in version.split('.')) 361 346 except Exception as e: 362 347 raise GitError("Could not retrieve GIT version (tried to " 363 348 "execute/parse '%s --version' but got %s)" 364 349 % (git_bin, repr(e))) 350 return { 351 'v_str': version, 352 'v_tuple': split_version, 353 'v_min_tuple': GIT_VERSION_MIN_REQUIRED, 354 'v_min_str': '.'.join(map(str, GIT_VERSION_MIN_REQUIRED)), 355 'v_compatible': split_version >= GIT_VERSION_MIN_REQUIRED, 356 } 365 357 366 358 def __init__(self, git_dir, log, git_bin='git', git_fs_encoding=None, -
tracopt/versioncontrol/git/tests/PyGIT.py
r3f72907 rf24965c 38 38 def test_git_version(self): 39 39 v = Storage.git_version() 40 self.assert True(v)40 self.assertIsInstance(v, dict) 41 41 self.assertTrue(v['v_compatible']) 42 self.assertIsInstance(v['v_str'], str) 43 self.assertGreaterEqual(len(v['v_tuple']), 3) 44 self.assertIsInstance(v['v_tuple'][0], int) 45 self.assertIsInstance(v['v_tuple'][1], int) 46 self.assertIsInstance(v['v_tuple'][2], int) 42 47 43 48
Note:
See TracChangeset
for help on using the changeset viewer.