Настройка 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 проект