Проверяет понимание механизма Git-хуков и умения автоматизировать запуск unit-тестов перед коммитом для предотвращения попадания сломанного кода в репозиторий.
Git-хуки — это специальные скрипты, которые Git автоматически вызывает в определённые моменты работы с репозиторием: перед коммитом, после коммита, перед push и так далее. Хук pre-commit запускается до того, как коммит будет создан, и если скрипт завершится с ненулевым кодом возврата, коммит отменяется. Это идеальное место для запуска unit-тестов, линтеров и форматтеров.
Самый простой способ — создать исполняемый файл .git/hooks/pre-commit. Git будет вызывать его автоматически. Однако такой файл не попадает в репозиторий и не шарится между разработчиками, поэтому для командной работы лучше использовать инструменты управления хуками.
#!/bin/sh
# .git/hooks/pre-commit
npm test
if [ $? -ne 0 ]; then
echo "Тесты упали, коммит отменён"
exit 1
fi
Husky — популярный инструмент, который устанавливает хуки в репозиторий и позволяет хранить их в проекте. Вместе с lint-staged можно запускать тесты только для изменённых файлов, что ускоряет работу.
// package.json
{
"scripts": { "test": "jest" },
"husky": {
"hooks": {
"pre-commit": "npm test"
}
}
}
Для Python и других языков есть фреймворк pre-commit. Он описывает хуки в файле .pre-commit-config.yaml и управляет их установкой.
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: pytest
name: pytest
entry: pytest
language: system
pass_filenames: false
--no-verify только в крайних случаях, чтобы не обходить проверки.Итог: pre-commit хуки с запуском unit-тестов помогают ловить ошибки до попадания кода в общую ветку, экономят время на ревью и поддерживают стабильность сборки. Применяйте их в любом проекте, где важна дисциплина коммитов и качество кода.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
Git
Testing
Ключевые слова
Подпишись на Node.js Developer в телеграм