Merge pull request #809 from pre-commit/worktree

Support `pre-commit install` inside a worktree
This commit is contained in:
Anthony Sottile
2018-08-06 10:11:51 -07:00
committed by GitHub
2 changed files with 23 additions and 4 deletions

View File

@@ -31,10 +31,16 @@ def get_root():
def get_git_dir(git_root):
return os.path.normpath(os.path.join(
git_root,
cmd_output('git', 'rev-parse', '--git-dir', cwd=git_root)[1].strip(),
))
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')
def get_remote_url(git_root):

View File

@@ -172,6 +172,19 @@ def test_install_in_submodule_and_run(tempdir_factory, store):
assert NORMAL_PRE_COMMIT_RUN.match(output)
def test_install_in_worktree_and_run(tempdir_factory, store):
src_path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
path = tempdir_factory.get()
cmd_output('git', '-C', src_path, 'branch', '-m', 'notmaster')
cmd_output('git', '-C', src_path, 'worktree', 'add', path, '-b', 'master')
with cwd(path):
assert install(Runner(path, C.CONFIG_FILE), store) == 0
ret, output = _get_commit_output(tempdir_factory)
assert ret == 0
assert NORMAL_PRE_COMMIT_RUN.match(output)
def test_commit_am(tempdir_factory, store):
"""Regression test for #322."""
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')