From 18b6f4b519e1520c846d4899db15a5ab9b3d9043 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 22 Sep 2018 08:53:52 -0700 Subject: [PATCH] Fix rev-parse for older git versions --- pre_commit/git.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pre_commit/git.py b/pre_commit/git.py index 9ec9c9fbc..a92611632 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -31,16 +31,13 @@ def get_root(): def get_git_dir(git_root): - def _git_dir(opt): - return os.path.normpath(os.path.join( - git_root, - cmd_output('git', 'rev-parse', opt, cwd=git_root)[1].strip(), - )) - - try: - return _git_dir('--git-common-dir') - except CalledProcessError: # pragma: no cover (git < 2.5) - return _git_dir('--git-dir') + opts = ('--git-common-dir', '--git-dir') + _, out, _ = cmd_output('git', 'rev-parse', *opts, cwd=git_root) + for line, opt in zip(out.splitlines(), opts): + if line != opt: # pragma: no branch (git < 2.5) + return os.path.normpath(os.path.join(git_root, line)) + else: + raise AssertionError('unreachable: no git dir') def get_remote_url(git_root):