Автоматизация процесса слияния с помощью Git hooks
1. Настройка pre-commit hook для проверки кода
Для начала, давайте автоматизируем проверку кода перед коммитом. Это позволит избежать ошибок форматирования или стиля на ранней стадии.
Шаги для настройки:
- Откройте папку .git/hooks в вашем репозитории.
- Найдите файл pre-commit.sample и переименуйте его в pre-commit.
- Откройте этот файл в текстовом редакторе и добавьте следующее содержимое:
#!/bin/sh
# Скрипт для проверки стиля кода с помощью lint
echo "Проверка стиля кода перед коммитом..."
npm run lint
if [ $? -ne 0 ]; then
echo "Проверка не пройдена. Исправьте ошибки и попробуйте снова."
exit 1
fi
Теперь перед каждым коммитом будет автоматически запускаться проверка стиля кода. Если проверка не пройдёт, коммит не будет создан.
2. Использование post-merge hook для запуска тестов
Следующим шагом можно настроить запуск тестов после слияния веток. Это полезно, чтобы убедиться, что интеграция новой ветки не сломала приложение.
Шаги для настройки:
- В папке .git/hooks создайте файл post-merge (если его нет).
- Добавьте в этот файл следующий код:
#!/bin/sh
# Скрипт для автоматического запуска тестов после слияния
echo "Запуск тестов после слияния..."
npm test
if [ $? -ne 0 ]; then
echo "Тесты не пройдены. Проверьте ошибки."
exit 1
fi
После этого каждый раз, когда вы будете сливать ветки, автоматически будут запускаться тесты, что позволит быстрее обнаруживать возможные ошибки.
3. Настройка pre-push hook для проверки состояния перед отправкой изменений
Pre-push hook можно использовать для того, чтобы убедиться, что на сервер не будут отправлены изменения с ошибками.
Шаги для настройки:
- Создайте файл pre-push в папке .git/hooks.
- Добавьте в него следующий код:
#!/bin/sh
# Скрипт для запуска тестов перед отправкой изменений на сервер
echo "Запуск тестов перед отправкой..."
npm test
if [ $? -ne 0 ]; then
echo "Тесты не пройдены. Отправка отменена."
exit 1
fi
Теперь перед отправкой ваших изменений на удалённый репозиторий будет выполняться проверка состояния проекта.
Комментарии