Настройка pre-commit хуков для Django проекта
Git имеет в своем составе инструмент, который умеет запускать кастомные скрипты при наступлении какого-либо события (к примеру commit
, push
и т.п.).
.pre-commit
является надстройкой над стандартным git pre-commit hook
, которая позволяет запускать скрипты описанные в .pre-commit-config.yaml
перед созданием коммита. Это, например, позволяет поддерживать код проекта на Django в соответствии с принятыми стандартами PEP при минимальном личном участии.
Установка pre-commit
Стандартные шаги расписывать не буду (перейти в папку проекта, активировать виртуальное окружение).
- Устанавливаем pre-commit
|
|
Если нужна определенная версия - устанавливаем нужную. Например, для python 3.5
последняя совместимая версия 1.21.0
|
|
Файл настроек .pre-commit-config.yaml
Настройки пре-коммита находятся в файле .pre-commit-config.yaml. Я добавил только самые основные, но вариаций тут масса, хоть тесты на прекоммите прогоняй.
Установка хуков
|
|
Устанавливает хуки в .git/hooks/pre-commit
Предварительно лучше удалить старый файл pre-commit
(или переименовать) или удалить оттуда кусок с автопепом, иначе вылезет конфликт вызова автопепа у тех, кто настраивал прекоммит по инструкции из ридми.
Настройки autopep8, black, flake8 и isort
Настройки поведения autopep8
и isort
находятся в файле setup.cfg
. Можно настроить как угодно и это гораздо прозрачнее, чем в текущем варианте.
По дальнейшему процессу использования ничем не отличается от текущего варианта: коммитим, прекоммит переписывает файлы, делаем add еще раз, снова коммитим. Все.
Источники:
Интеграция .pre-commit hook в Django проект