При совместной разработке кода часто возникают различия в стилях: кто-то забывает переносы строк, кто-то — запятые. Конечно, можно поручить форматирование CI/CD, но это займет больше времени. Git Hooks выполняются на рабочей станции разработчика и легко настраиваются.
Для чего могут быть полезны Git Hooks:
⚙️ Форматирование кода —
dart format⚙️ Статический анализ кода —
dart analyze⚙️ Запуск тестов
Все это можно запускать в определенные моменты:
⚙️ Перед и после
git commit⚙️ Перед и после
git push⚙️ Перед и после других команд гита
Давайте рассмотрим на примере добавления команды на форматирование кода перед тем, как разработчик сделает коммит.
Пример: добавим команду форматирования кода перед коммитом. Сначала укажем папку для Git Hooks:
git config core.hooksPath .githooks/
Далее создадим эту папку и в ней файл pre-commit. Посмотрим на его наполнение:
#!/usr/bin/env bash
#dart format
printf "\e[33;1m%s\e[0m\n" 'Running dart format'
result=$(dart format .)
result_lines=$(echo "$result" | wc -l)
if [ "$result_lines" -gt 1 ]; then
echo "$result"
printf "\e[31;1m%s\e[0m\n" 'Dart format applied changes, please recommit'
exit 1
fi
echo "$result"
printf "\e[32;1m%s\e[0m\n" 'Finished running dart format'
Тут мы не просто не вызываем наш метод, но и смотрим на его результат. Если он ничего не поменял, то выведем, что все хорошо, в обратном случае попросим пользователя сделать коммит еще раз.
Во второй части мы перенесем этот скрипт на Dart.
Делитесь в чате: используете ли вы Git Hooks в своих проектах? Какие команды запускаете?
