install.sh: positional argumentsCONFIGandVENVreplaced by named flags--config CONFIGand--venv VENV. Callers must update accordingly:install.sh /path/to/hooks.yaml→install.sh --config /path/to/hooks.yamlinstall.sh "" /path/to/venv→install.sh --venv /path/to/venvinstall.sh /path/to/hooks.yaml /path/to/venv→install.sh --config /path/to/hooks.yaml --venv /path/to/venv
run.sh: positional argumentCONFIGreplaced by named flag--config CONFIG. Callers must update accordingly:run.sh /path/to/hooks.yaml→run.sh --config /path/to/hooks.yaml
install.sh: add--no-inputtopip installcalls to prevent any stdin interaction when running in a non-interactive environment such as a Dockerfile (#24)install.sh: pass--cleartouv venvso a second invocation does not show the interactive "replace existing venv?" prompt that stalls in Docker (#24)
- CI job
test_double_invocation_non_interactivein.gitlab-ci.yml: runsinstall.shtwice in sequence with stdin closed and a timeout, exercising the managed-venv code path (uv) on second invocation (#24)
- CI job
setup_uvand the dedicatedsetupstage removed from.gitlab-ci.yml:uvis pre-installed on runner servers, so a serial setup step is no longer needed
- Disable hadolint rule DL3005 (Do not use apt-get upgrade or dist-upgrade) (#23)
- Documentation for sharing a single virtualenv across a project's submodule tree:
each
setup.shaccepts an optional venv path as$1and forwards it downstream, so only one environment is created regardless of how many submodules need hooks installed. - Add dedicated setup for python3.8 and python3.9.
- Add tests suite for confirming that python3.8-python3.14 range is supported.
- Optional
VENVargument forinstall.sh: when provided, pre-commit is installed into that existing virtualenv instead of creating an isolated./pre-commit/.venv. Aftersetup.sh,source .venv/bin/activateis sufficient for manual runs. uvsupport ininstall.sh: usesuv venv/uv pip installwhenuvis available in PATH, falls back topython -m venv/pipotherwise.
- Replaced
hadolint/hadolintpre-commit hook (language: system, requires a system-widehadolintbinary) withAleksaC/hadolint-py(self-contained Python wheel — no system installation needed on a fresh machine). run.shnow reads the venv path from.pre-commit-config.pathinstead of hardcoding./pre-commit/.venv, correctly supporting both the new external-venv and legacy isolated-venv setups. Old.pre-commit-config.pathfiles (without theprecommit_venvline) continue to work via a backward-compatible default.
clang-formatandcppcheckare now declared asadditional_dependencieson thepocc/pre-commit-hooksentries, so pre-commit installs the newest available PyPI versions into the hook's own isolated virtualenv. This ensures the pip-installed binaries are used regardless of what is installed on the system and regardless of whether pre-commit is invoked viarun.shor the git commit hook.
- ruff (replaces black, isort, and autoflake with a single, faster tool)
check-illegal-windows-nameshook for cross-platform filename safetycheck-tomlhook for TOML file validationno-commit-to-branchhook to protect master from direct commits- Python 3.9+ version check in
install.sh SKIP: no-commit-to-branchvariable in.gitlab-ci.yml- gitleaks for secret detection (API keys, passwords, tokens)
- codespell for catching common misspellings
- ruff security rules (
S/flake8-bandit), pyupgrade rules (UP), and bugbear rules (B) - hadolint for Dockerfile linting
- clang-format and cppcheck for C/C++ linting and formatting
- ruff pycodestyle rules (
E,W) for whitespace and style checks
- pre-commit updated to 4.5.1
- pre-commit-hooks updated to v5.0.0
- mirrors-mypy updated to v1.19.1
- shellcheck-py updated to v0.11.0.1
- shfmt-py updated to v3.12.0.1
- black (replaced by ruff-format)
- isort (replaced by ruff's isort rules)
- autoflake (replaced by ruff's pyflakes rules)
- duplicate
check-symlinksentry
- pre-commit should not affect
*.patchfiles - duplicate shellcheck
- mypy
- autoflake
- isort
- shfmt and shellcheck are installed as python package
- black hook updated to 22.8.0
- generic
setup.shfor development
- renamed default virtual environment to
.venv - renamed old
setup.shtoinstall.sh - pre-commit updated to 2.20.0
- pre-commit-hooks updated to 4.3.0
- black hook updated to 22.6.0
- black hook updated to 22.3.0
- pre-commit updated to 2.17.0
- pre-commit-hooks updated to 4.1.0
- black hook updated to 22.1.0
- shellcheck hook updated to 2.1.6
- shfmt hook updated to 3.4.3
- cleaned pre-commit-hooks rules
- description in the scripts
- described setup and usage in the readme
- stray coverage dependencies from
requirements.txt
- default pre-commit configuration
- setup script
- run script