mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-13 20:40:08 -06:00
Support pre-commit install inside a worktree
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user