Comment et pourquoi utiliser pre-commit

By jefcolbi on November 07, 2025
Reading time: 7 minutes

Comment et pourquoi utiliser pre-commit

Bonjour le monde

Pre-commit est un outil simple et puissant dans l'arsenal des outils Git que tout developpeur moderne devrait avoir. Aujourd'hui nous allons y faire une petite introduction.

Table des matières

Introduction

Les hooks git sont des scripts utiles pour identifier les problèmes simples avant de les soumettre à la révision du code. Pre-commit execute les hooks sur chaque commit pour signaler automatiquement les problèmes dans le code tels que les points-virgules manquants, les espaces blancs de fin et les instructions de débogage. En signalant ces problèmes avant la révision du code, cela permet à un réviseur de code de se concentrer sur l'architecture d'un changement sans perdre de temps avec des astuces de style trivial.

Pre-commit a été crée pour résoudre les problèmes de hook. Il s'agit d'un gestionnaire de packages multilangage pour les hooks de pré-validation. Vous spécifiez une liste de hooks que vous souhaitez et pré-commit gère l'installation et l'exécution de n'importe quel hook écrit dans n'importe quelle langage avant chaque commit. Pre-commit est spécialement conçu pour ne pas nécessiter d'accès root. Si l'un de vos développeurs n'a pas NodeJS installé, par exemple, mais modifie un fichier JavaScript, pre-commit gère automatiquement le téléchargement et l'installation du nœud pour exécuter eslint sans root.

Installation

Puisque pre-commit est un package Python, pour l'installer il suffit de faire: pip install pre-commit

Ou alors vous pouvez juste ajouter pre-commit dans votre fichier requirements.txt

Si vous utilisez la distribution Anaconda, il suffit de faire: conda install -c conda-forge pre-commit

Utilisation

1. Ajouter une configuration

  • créer un fichier nommé .pre-commit-config.yaml
  • vous pouvez générer une configuration très basique en utilisant pre-commit sample-config
  • cet exemple utilise un formateur pour le code python, cependant pre-commit fonctionne pour n'importe quel langage de programmation
  • d'autres hooks sont disponibles
repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
    -   id: check-yaml
    -   id: end-of-file-fixer
    -   id: trailing-whitespace
-   repo: https://github.com/psf/black
    rev: 19.3b0
    hooks:
    -   id: black

2. Installez les scripts git hook

  • exécutez pre-commit install pour configurer les scripts git hook
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
  • maintenant pre-commit s'exécutera automatiquement sur git commit

3. Tester sur les fichiers existants

  • c'est généralement une bonne idée d'exécuter les hooks sur tous les fichiers lors de l'ajout de nouveaux hooks (généralement pre-commit ne s'exécutera que sur les fichiers modifiés pendant les hooks git)
$ pre-commit run --all-files
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Initializing environment for https://github.com/psf/black.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/psf/black.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
Check Yaml...............................................................Passed
Fix End of Files.........................................................Passed
Trim Trailing Whitespace.................................................Failed
- hook id: trailing-whitespace
- exit code: 1

Files were modified by this hook. Additional output:

Fixing sample.py

black....................................................................Passed

N'oubliez pas de visiter le site officiel https://pre-commit.com/ pour en savoir d'avantage.

Allez c'est déjà la fin de ce tuto sur pre-commit. Je vous préparerais bientot un deuxième article sur pre-commit pour vous des configurations avancées. Pour l'instant digérez celui-ci! Comme d'habitude si vous avez aimé l'article n'oubliez pas de likez et si vous avez une question, une remarque ou une correction les commentaires sont là pour vous.

Comments (0)

-- Signin to comment --

No comments yet. Be the first to comment!