Skip to content

Commit

Permalink
Merge pull request #1727 from mrogaski/1610_git_toplevel_relpath
Browse files Browse the repository at this point in the history
git: changed rev-parse option for Git 2.25 changes to --show-toplevel
  • Loading branch information
asottile committed Dec 7, 2020
2 parents cf604f6 + 29d15de commit eacf4c8
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions pre_commit/git.py
Expand Up @@ -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:
Expand Down

0 comments on commit eacf4c8

Please sign in to comment.