diff options
author | Mike Frysinger <vapier@google.com> | 2019-07-10 15:37:43 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@google.com> | 2019-07-11 01:29:18 +0000 |
commit | f88b2fe5699ed224ad693e22a4c26fb76b8befc8 (patch) | |
tree | 41de2e902dad01d21c1cee1bf4392a487d00f018 | |
parent | 6db1b9e282c1bf6625ca19a595fb56be44ba276f (diff) | |
download | git-repo-f88b2fe5699ed224ad693e22a4c26fb76b8befc8.tar.gz |
repo: all ParseGitVersion to load git version info itself
All code that calls ParseGitVersion needs to run `git --version`
itself and parse the output before passing it in. To avoid that
duplication, allow ParseGitVersion to run `git --version` itself
if ver_str=None.
Bug: https://crbug.com/gerrit/11144
Change-Id: Ie07793ca57a40c0231af808df04a576118d5eea3
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/231054
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
-rwxr-xr-x | repo | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -383,7 +383,11 @@ def _Init(args, gitc_init=False): | |||
383 | GitVersion = collections.namedtuple( | 383 | GitVersion = collections.namedtuple( |
384 | 'GitVersion', ('major', 'minor', 'micro', 'full')) | 384 | 'GitVersion', ('major', 'minor', 'micro', 'full')) |
385 | 385 | ||
386 | def ParseGitVersion(ver_str): | 386 | def ParseGitVersion(ver_str=None): |
387 | if ver_str is None: | ||
388 | # Load the version ourselves. | ||
389 | ver_str = _GetGitVersion() | ||
390 | |||
387 | if not ver_str.startswith('git version '): | 391 | if not ver_str.startswith('git version '): |
388 | return None | 392 | return None |
389 | 393 | ||
@@ -399,7 +403,7 @@ def ParseGitVersion(ver_str): | |||
399 | return GitVersion(*to_tuple) | 403 | return GitVersion(*to_tuple) |
400 | 404 | ||
401 | 405 | ||
402 | def _CheckGitVersion(): | 406 | def _GetGitVersion(): |
403 | cmd = [GIT, '--version'] | 407 | cmd = [GIT, '--version'] |
404 | try: | 408 | try: |
405 | proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) | 409 | proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) |
@@ -410,13 +414,20 @@ def _CheckGitVersion(): | |||
410 | print(file=sys.stderr) | 414 | print(file=sys.stderr) |
411 | print('Please make sure %s is installed and in your path.' % GIT, | 415 | print('Please make sure %s is installed and in your path.' % GIT, |
412 | file=sys.stderr) | 416 | file=sys.stderr) |
413 | raise CloneFailure() | 417 | raise |
414 | 418 | ||
415 | ver_str = proc.stdout.read().strip() | 419 | ver_str = proc.stdout.read().strip() |
416 | proc.stdout.close() | 420 | proc.stdout.close() |
417 | proc.wait() | 421 | proc.wait() |
422 | return ver_str.decode('utf-8') | ||
423 | |||
424 | |||
425 | def _CheckGitVersion(): | ||
426 | try: | ||
427 | ver_act = ParseGitVersion() | ||
428 | except OSError: | ||
429 | raise CloneFailure() | ||
418 | 430 | ||
419 | ver_act = ParseGitVersion(ver_str) | ||
420 | if ver_act is None: | 431 | if ver_act is None: |
421 | print('error: "%s" unsupported' % ver_str, file=sys.stderr) | 432 | print('error: "%s" unsupported' % ver_str, file=sys.stderr) |
422 | raise CloneFailure() | 433 | raise CloneFailure() |