mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-23 09:20:31 -06:00
git: changed rev-parse option for Git 2.25 changes to --show-toplevel
Git 2.25 introduced a change to "rev-parse --show-toplevel" that exposed underlying volumes for Windows drives mapped with SUBST. We use "rev-parse --show-cdup" to get the appropriate path, but must perform an extra check to see if we are in the .git directory.
This commit is contained in:
committed by
Anthony Sottile
parent
cf604f6b93
commit
29d15de38e
@@ -47,21 +47,26 @@ def no_git_env(
|
||||
|
||||
|
||||
def get_root() -> str:
|
||||
# Git 2.25 introduced a change to "rev-parse --show-toplevel" that exposed
|
||||
# underlying volumes for Windows drives mapped with SUBST. We use
|
||||
# "rev-parse --show-cdup" to get the appropriate path, but must perform
|
||||
# an extra check to see if we are in the .git directory.
|
||||
try:
|
||||
root = cmd_output('git', 'rev-parse', '--show-toplevel')[1].strip()
|
||||
root = os.path.realpath(
|
||||
cmd_output('git', 'rev-parse', '--show-cdup')[1].strip(),
|
||||
)
|
||||
git_dir = os.path.realpath(get_git_dir())
|
||||
except CalledProcessError:
|
||||
raise FatalError(
|
||||
'git failed. Is it installed, and are you in a Git repository '
|
||||
'directory?',
|
||||
)
|
||||
else:
|
||||
if root == '': # pragma: no cover (old git)
|
||||
raise FatalError(
|
||||
'git toplevel unexpectedly empty! make sure you are not '
|
||||
'inside the `.git` directory of your repository.',
|
||||
)
|
||||
else:
|
||||
return root
|
||||
if os.path.commonpath((root, git_dir)) == git_dir:
|
||||
raise FatalError(
|
||||
'git toplevel unexpectedly empty! make sure you are not '
|
||||
'inside the `.git` directory of your repository.',
|
||||
)
|
||||
return root
|
||||
|
||||
|
||||
def get_git_dir(git_root: str = '.') -> str:
|
||||
|
||||
Reference in New Issue
Block a user