KeiruaProd

I help my clients acquire new users and make more money with their web businesses. I have ten years of experience with SaaS projects. If that’s something you need help with, we should get in touch!
< Back to article list

Des hooks pre-commit pour git avec… pre-commit

Dans plein de projets, il y a des hooks pre-commit pour gérer le linter et empêcher d’ajouter dans le dépot du code invalide selon le standard du projet. Ces scripts sont généralement des fichiers bash qu’on appelle dans .git/hooks/pre-commit.

Inconvénient de cette approche:

Une alternative

pre-commit est pas mal cool pour gérer les outils de pre-commit:

Chaque commit peut être refusé s’il ne respecte pas les règles:

la valeur ajoutée c’est que:

Configuration des différents outils

Sous Python, il n’y a pas de consensus dans l’écosystème sur la configuration et c’est toujours la galère de se souvenir quelle configuration va dans quel fichier. On va aussi voir que la longueur max est dupliquée dans les 3 outils…. Voici une config que j’utilise :

Black

black est un linter configuré via pyproject.toml

[tool.black]
line-length = 119

isort et flake8

isort et flake8 sont configurés via setup.cfg

# setup.cfg
# - https://timothycrosley.github.io/isort/

[isort]
combine_as_imports = True
ensure_newline_before_comments = True
force_grid_wrap = 0
include_trailing_comma = True
lines_after_imports = 2
line_length = 119
multi_line_output = 3
use_parentheses = True

# - https://www.flake8rules.com

[flake8]
max-line-length = 119