From 968b2fdaf1c4b54d6e5d6c8c857c01ecad539c74 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Mon, 30 Dec 2019 11:00:45 -0800 Subject: [PATCH] Allow try-repo to work on bare repositories --- pre_commit/git.py | 2 +- tests/commands/try_repo_test.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pre_commit/git.py b/pre_commit/git.py index c8faf60f..136cefef 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -141,7 +141,7 @@ def has_diff(*args, **kwargs): repo = kwargs.pop('repo', '.') assert not kwargs, kwargs cmd = ('git', 'diff', '--quiet', '--no-ext-diff') + args - return cmd_output_b(*cmd, cwd=repo, retcode=None)[0] + return cmd_output_b(*cmd, cwd=repo, retcode=None)[0] == 1 def has_core_hookpaths_set(): diff --git a/tests/commands/try_repo_test.py b/tests/commands/try_repo_test.py index 536eb9bc..1849c70a 100644 --- a/tests/commands/try_repo_test.py +++ b/tests/commands/try_repo_test.py @@ -98,6 +98,15 @@ def test_try_repo_relative_path(cap_out, tempdir_factory): assert not try_repo(try_repo_opts(relative_repo, hook='bash_hook')) +def test_try_repo_bare_repo(cap_out, tempdir_factory): + repo = make_repo(tempdir_factory, 'modified_file_returns_zero_repo') + with cwd(git_dir(tempdir_factory)): + _add_test_file() + bare_repo = os.path.join(repo, '.git') + # previously crashed attempting modification changes + assert not try_repo(try_repo_opts(bare_repo, hook='bash_hook')) + + def test_try_repo_specific_revision(cap_out, tempdir_factory): repo = make_repo(tempdir_factory, 'script_hooks_repo') ref = git.head_rev(repo)