From 6ee9e13b2686f66c0e796947dfcb775201b1c3d6 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Tue, 9 Jun 2020 09:45:40 -0700 Subject: [PATCH] prevent infinite recursion of post-checkout on clone --- pre_commit/git.py | 3 ++- tests/git_test.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pre_commit/git.py b/pre_commit/git.py index 7e757f247..576bef8cc 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -158,7 +158,8 @@ def init_repo(path: str, remote: str) -> None: remote = os.path.abspath(remote) env = no_git_env() - cmd_output_b('git', 'init', path, env=env) + # avoid the user's template so that hooks do not recurse + cmd_output_b('git', 'init', '--template=', path, env=env) cmd_output_b('git', 'remote', 'add', 'origin', remote, cwd=path, env=env) diff --git a/tests/git_test.py b/tests/git_test.py index e73a6f240..fafd4a6e3 100644 --- a/tests/git_test.py +++ b/tests/git_test.py @@ -186,3 +186,8 @@ def test_no_git_env(): 'GIT_SSH': '/usr/bin/ssh', 'GIT_SSH_COMMAND': 'ssh -o', } + + +def test_init_repo_no_hooks(tmpdir): + git.init_repo(str(tmpdir), remote='dne') + assert not tmpdir.join('.git/hooks').exists()