summaryrefslogtreecommitdiffstats
path: root/git_command.py
diff options
context:
space:
mode:
Diffstat (limited to 'git_command.py')
-rw-r--r--git_command.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/git_command.py b/git_command.py
index 588a64fd..36fcfe7c 100644
--- a/git_command.py
+++ b/git_command.py
@@ -19,6 +19,7 @@ import subprocess
19from typing import Any, Optional 19from typing import Any, Optional
20 20
21from error import GitError 21from error import GitError
22from error import RepoExitError
22from git_refs import HEAD 23from git_refs import HEAD
23import platform_utils 24import platform_utils
24from repo_trace import REPO_TRACE, IsTrace, Trace 25from repo_trace import REPO_TRACE, IsTrace, Trace
@@ -44,6 +45,7 @@ DEFAULT_GIT_FAIL_MESSAGE = "git command failure"
44# Common line length limit 45# Common line length limit
45GIT_ERROR_STDOUT_LINES = 1 46GIT_ERROR_STDOUT_LINES = 1
46GIT_ERROR_STDERR_LINES = 1 47GIT_ERROR_STDERR_LINES = 1
48INVALID_GIT_EXIT_CODE = 126
47 49
48 50
49class _GitCall(object): 51class _GitCall(object):
@@ -51,8 +53,9 @@ class _GitCall(object):
51 def version_tuple(self): 53 def version_tuple(self):
52 ret = Wrapper().ParseGitVersion() 54 ret = Wrapper().ParseGitVersion()
53 if ret is None: 55 if ret is None:
54 print("fatal: unable to detect git version", file=sys.stderr) 56 msg = "fatal: unable to detect git version"
55 sys.exit(1) 57 print(msg, file=sys.stderr)
58 raise GitRequireError(msg)
56 return ret 59 return ret
57 60
58 def __getattr__(self, name): 61 def __getattr__(self, name):
@@ -167,10 +170,9 @@ def git_require(min_version, fail=False, msg=""):
167 need = ".".join(map(str, min_version)) 170 need = ".".join(map(str, min_version))
168 if msg: 171 if msg:
169 msg = " for " + msg 172 msg = " for " + msg
170 print( 173 error_msg = "fatal: git %s or later required%s" % (need, msg)
171 "fatal: git %s or later required%s" % (need, msg), file=sys.stderr 174 print(error_msg, file=sys.stderr)
172 ) 175 raise GitRequireError(error_msg)
173 sys.exit(1)
174 return False 176 return False
175 177
176 178
@@ -403,6 +405,13 @@ class GitCommand(object):
403 ) 405 )
404 406
405 407
408class GitRequireError(RepoExitError):
409 """Error raised when git version is unavailable or invalid."""
410
411 def __init__(self, message, exit_code: int = INVALID_GIT_EXIT_CODE):
412 super().__init__(message, exit_code=exit_code)
413
414
406class GitCommandError(GitError): 415class GitCommandError(GitError):
407 """ 416 """
408 Error raised from a failed git command. 417 Error raised from a failed git command.