Skip to content

pre-commit install-hooks should run without git tree #2378

@cdleonard

Description

@cdleonard

search tried in the issue tracker

install-hooks

describe your issue

I want to build a docker container in which pre-commit hooks are already installed but running pre-commit install-hooks -c .pre-commit-config.yaml fails: An error has occurred: FatalError: git failed. Is it installed, and are you in a Git repository directory?

There are various workarounds such as copying the .git directory inside the container or creating a temporary git repo but I think it's useful to just allow install-hooks to work with just a config file

pre-commit --version

pre-commit 2.19.0

.pre-commit-config.yaml

# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.2.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-added-large-files

~/.cache/pre-commit/pre-commit.log (if present)

An error has occurred: FatalError: git failed. Is it installed, and are you in a Git repository directory?
Check the log at /root/.cache/pre-commit/pre-commit.log

version information

pre-commit version: 2.19.0
git --version: git version 2.34.1
sys.version:
    3.10.4 (main, Apr  2 2022, 09:04:19) [GCC 11.2.0]
sys.executable: /usr/bin/python3
os.name: posix
sys.platform: linux

error information

An error has occurred: FatalError: git failed. Is it installed, and are you in a Git repository directory?
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/git.py", line 58, in get_root
    cmd_output('git', 'rev-parse', '--show-cdup')[1].strip(),
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/util.py", line 152, in cmd_output
    returncode, stdout_b, stderr_b = cmd_output_b(*cmd, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/util.py", line 146, in cmd_output_b
    raise CalledProcessError(returncode, cmd, retcode, stdout_b, stderr_b)
pre_commit.util.CalledProcessError: command: ('/usr/bin/git', 'rev-parse', '--show-cdup')
return code: 128
expected return code: 0
stdout: (none)
stderr:
    fatal: not a git repository (or any of the parent directories): .git


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/error_handler.py", line 73, in error_handler
    yield
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/main.py", line 344, in main
    _adjust_args_and_chdir(args)
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/main.py", line 147, in _adjust_args_and_chdir
    toplevel = git.get_root()
  File "/usr/local/lib/python3.10/dist-packages/pre_commit/git.py", line 64, in get_root
    raise FatalError(
pre_commit.errors.FatalError: git failed. Is it installed, and are you in a Git repository directory?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions