W każdym większym projekcie przychodzi moment, w którym trzeba przestać polegać na dobrej woli zespołu i zacząć automatyzować pewne rzeczy. Jednym z pierwszych kroków w tym kierunku są hooki pre-commit. Dzięki nim możemy mieć pewność, że kod, który trafia do repozytorium, przechodzi przez ustalony zestaw narzędzi i nie zostawia po sobie bałaganu.
Czym jest pre-commit?
pre-commit to framework do zarządzania i uruchamiania hooków Gitowych – czyli skryptów, które uruchamiają się przed wykonaniem określonych akcji, np. przed wykonaniem git commit.
Dzięki pre-commit możesz automatycznie:
- sformatować kod przy użyciu black lub ruffa,
- sprawdzić składnię z flake8,
- upewnić się, że nie zostawiłeś przypadkiem print() w kodzie produkcyjnym,
- zablokować commita jeśli testy nie przechodzą,
- i wiele, wiele więcej.
Jak to zainstalować?
Najpierw instalujemy paczkę:
$ pip install pre-commit
Następnie w katalogu głównym projektu tworzymy plik .pre-commit-config.yaml. Oto przykładowa zawartość:
repos:
- repo: https://github.com/psf/black
rev: 24.3.0
hooks:
- id: black
- repo: https://github.com/PyCQA/flake8
rev: 7.0.0
hooks:
- id: flake8
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
Na koniec aktywujemy hooki w repozytorium:
$ pre-commit install
Od teraz przy każdym git commit pre-commit odpali wszystkie skonfigurowane hooki i nie pozwoli zrobić commita, jeśli któryś z nich zwróci błąd.
Dlaczego warto?
- Automatyzujesz sprawdzanie stylu i jakości kodu.
- Ułatwiasz sobie i innym życie (mniej code review w stylu „tu przecinek źle, tu większy odstęp”).
- Unikasz nieprzyjemnych niespodzianek po pushu do repozytorium.
Podsumowanie
pre-commit to jedno z tych narzędzi, które raz wdrożone, staje się niezastąpione. Pomaga utrzymać porządek, oszczędza czas i nerwy. Jeśli jeszcze go nie używasz – to świetny moment, żeby zacząć 😉
Photo by Janis Ringli on Unsplash
