Un hook est une action lancée automatiquement par Git à un moment clé (avant un commit, avant un push, etc.).
L’idée : laisser des outils vérifier/formater le code avant qu’il n’entre dans l’historique.
Avec pre-commit, ces vérifications sont centralisées et faciles à maintenir.
Installation :
uv add --dev pre-commit ruff black sqlfluff dbt-core dbt-duckdb
pre-commit install
Configuration minimale (.pre-commit-config.yaml) à intégrer à la racine du projet :
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-merge-conflict
- id: detect-private-key
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.6.9
hooks:
- id: ruff
args: [--fix]
- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black
- repo: https://github.com/sqlfluff/sqlfluff
rev: 3.1.0
hooks:
- id: sqlfluff-lint
additional_dependencies: [dbt-core, dbt-duckdb]
args: [--dialect, duckdb, --templater, jinja]
Astuce utile :
pre-commit run --all-files # lance tous les hooks sur tout le repo une première fois
Une exception ?
git commit -m "..." --no-verify.
Premier vrai commit de code#
Une fois la base posée, le code peut être ajouté par blocs cohérents :
git checkout -b feat/bootstrap-codebase
git add src/ scripts/ models/ pyproject.toml uv.lock
git commit -m "feat(repo): import initial extractor and dbt skeleton"
git push -u origin feat/bootstrap-codebase