summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2019-07-10 15:37:43 -0400
committerMike Frysinger <vapier@google.com>2019-07-11 01:29:18 +0000
commitf88b2fe5699ed224ad693e22a4c26fb76b8befc8 (patch)
tree41de2e902dad01d21c1cee1bf4392a487d00f018
parent6db1b9e282c1bf6625ca19a595fb56be44ba276f (diff)
downloadgit-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-xrepo19
1 files changed, 15 insertions, 4 deletions
diff --git a/repo b/repo
index 114bb662..75d27692 100755
--- a/repo
+++ b/repo
@@ -383,7 +383,11 @@ def _Init(args, gitc_init=False):
383GitVersion = collections.namedtuple( 383GitVersion = collections.namedtuple(
384 'GitVersion', ('major', 'minor', 'micro', 'full')) 384 'GitVersion', ('major', 'minor', 'micro', 'full'))
385 385
386def ParseGitVersion(ver_str): 386def 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
402def _CheckGitVersion(): 406def _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
425def _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()