pre-commit hooks
When you enter the development environment, our pre-commit.hook
script is
symlinked in your local git repository as .git/hooks/pre-commit
, serving as
the Git pre-commit
hook.
When you make a git commit, the following happens:
-
The
pre-commit.hook
script runs the (confusingly named)pre-commit
tool in the flatpak sandbox. -
The
pre-commit
tool runs the hooks configured in .pre-commit-config.yaml
Sooner or later you'll want to update the pre-commit
framework and its hooks.
How to update the pre-commit
tool
The pre-commit
tool is installed in the flatpak sandbox through
python3-pre-commit.json.
The python3-pre-commit.json
file is generated with flatpak-pip-generator
.
See the instructions for updating the Python
dependencies.
How to update the hooks
The .pre-commit-config.yaml
file contains the list of hooks we use, grouped by
the git repo in which they can be found. The repos are downloaded and cached by
the pre-commit
tool on demand. These hooks are executed each in their own
own virtualenv.
A special case is the local
repo which groups the hooks installed alongside
the pre-commit framework, in the sandbox. We only need the pylint
hook to be
run in the sandbox instead of in its own virtualenv, such that it has access
to the Python environment in the sandbox.
To update pylint
, follow the instructions for updating the Python
dependencies.
To update the regular hooks, take the repos one by one, check what is the latest
version and update the entry in the .pre-commit-config.yaml
file. After
updating each repo, validate the entire codebase and fix all the newfound
errors.
For example, suppose we just updated the
https://github.com/pre-commit/pre-commit-hooks.git
repo to revision v3.4.0
:
- repo: https://github.com/pre-commit/pre-commit-hooks.git
rev: v3.4.0
hooks:
- id: check-yaml
To run the check-yaml
hook on the entire codebase:
(ptv-flatpak) $ ptvenv pre-commit run -a check-yaml
If you feel brave, you can use pre-commit
itself to update the hooks:
(ptv-flatpak) $ ptvenv pre-commit autoupdate
At the end, do a final check by running all the hooks on the entire codebase:
(ptv-flatpak) $ ptvenv pre-commit run -a
The results of the search are