На одном из проектов, который находится у меня на консалтинге, я хотел внедрить
grumphp. Основная задача, которую мы преследовали - это качество кодовой базы, код-стайл, стат анализ и т.д. и т.п.
Я слышал когда-то про эту либу, хотел потрогать, и вот кажется ситуация соответствующая, но чем сильнее погружался в его философии, тем все больше я отказывался от своей задумки.
GrumPHP - это либа, которая позволяет настроить хуки для git. Например, можно запускать проверки при попытке сделать коммит или запушить ветку в удаленный репозиторий. Мотив библиотеки заключается в том, что это поможет улучшить кодовую базу, а также научит ваших коллег следовать лучшим практиками и т.д.
НО КАКОЙ ЦЕНОЙ
Это самый злоебучий способ для разрабов, ещё один триггер для нервного срыва.
Проблемы использования GrumPHP:
- разные среды окружения, в которых работают разработчики, это может быть unix, windows, macos, которые имеют свои нюансы, а если ваше приложение запускается под докером, то нужно учитывать, что все проверки нужно запускать внутри контейнера, и опять же вызов команд внутри контейнеров будут отличаться или не будут совместимы, особенно это происходит, когда докер работает на винде. Кто работает/работал с виндой, тот знает какие бываю капризы. Большие риски того, что вам постоянно придется возвращаться к донастройке хуков;
- проверки прогоняются на локальном компе разработчика, и локально проверки могут занимать достаточно большое время, даже на скромных проектах. А если проект по фронту, то пару столетий точно;
- помимо того, что проверки требуют время, так ещё и ресурсов, особенно тесты, и разработчик вынужден сидеть над зависшем компом и ожидать результат
- нельзя запушить без успешно пройденных проверок
на самом деле можно, использовав
git commit
с флагом пропуска хуков, кто прям сходу готов вспомнить, что это за аргумент?
-f
?
-d
?
-n
?
-s
? Да, -n или
--no-verify
. А если пожар, как же инструция
1.
git add
.
2.
git commit “WIP: 🔥🔥🔥”
3.
git push
--no-verify
— помнит только тот , кто уже настрадался от хуков
А когда код будет запущен, скорее всего придется снова проверить всё на CI/CD, раз у разработчика есть флаг
--no-verify
, и собственно вопрос, зачем нужно было заебывать разраба на этапе коммита? 🙂
В итоге, я оставил все проверки на CI/CD
На данный момент, единственный вариант использования GrumPHP вижу только в автоформатировании кода при коммите, но только с ограничением на затронутые файлы в рамках бренча, а не всей кодовой базы.