Pre-commit хуки: как перестать править пробелы на код-ревью
Помните это чувство, когда открываешь пул-реквест коллеги, а там... вместо обсуждения архитектуры приходится писать «убери пробел в конце строки» или «здесь отступ не тот»? Знакомо...
Я долго терпел. Ну правда, что стоит поправить пару строк вручную? Но когда код-ревью начало превращаться в бесконечный граммар-наци по форматированию, а не в обсуждение логики и производительности — необходимо что-то менять.
Выход простой — pre-commit хуки. Штука, которая берет на себя всю рутину и не дает закоммитить код, пока он не приведен в порядок. Рассказываю, как это работает и почему без такого инструмента современная разработка просто невозможна.
- Что такое pre-commit хуки и зачем они нужны
Это скрипты, которые запускаются автоматически перед каждым коммитом. Они проверяют код на соответствие стандартам, форматируют его, ищут случайно закоммиченные пароли и делают кучу других полезных вещей.
Если проверка не пройдена — коммит отклоняется. Жестко, но справедливо. В итоге в репозиторий попадает только чистый код.
- Как я настраиваю pre-commit в проектах
Покажу два варианта конфигурации, которые использую чаще всего.
➤ Вариант 1. Базовый конфиг для Python
Тут всё просто - автоматическое приведение кода к единому стилю, чтобы в проекте не было разнобоя.
После добавления такого конфига можете забыть про споры о том, где ставить пробелы, а где скобки. Black все решит за вас.
➤ Вариант 2. Проверка секретов
Это уже серьезнее. Сколько раз видел в гите случайно закоммиченные ключи доступа к продакшену? Лучше не вспоминать.
Этот хук анализирует код на наличие потенциальных паролей, токенов и ключей. Если находит подозрительное — коммит блокируется. Спасает от очень дорогих ошибок.
- Что дает автоматизация проверок
После внедрения pre-commit хуков жизнь заметно меняется:
- Код-ревью теперь реально про код, а не про форматирование
- Новички в команде быстрее вливаются — не нужно запоминать кучу правил
- Все пишут в едином стиле, даже если используют разные IDE
- Снижается риск утечки секретов
Бонусом — конфигурация хранится прямо в репозитории. Это значит, что любой разработчик, клонирующий проект, автоматически получает одинаковый набор проверок. Никаких «а у меня по-другому работало».
- А что у вас?
Есть ли в ваших проектах автоматические проверки перед коммитом? Или до сих пор ручками всё правите?
Какие хуки используете? Может, есть любимые, которые я не упомянул?
👉🏻 Я в Telegram - https://t.me/helcode
👉🏻 Я в VK - https://vk.com/helcode
👉🏻 Я на Boosty - https://boosty.to/helcode