access_time
hourglass_empty
person_outline

Как Использовать Git Hooks (Хуки)?

Разработка качественного приложения — сложный процесс. Для этого мы используем инструменты, которые дополняют процесс написания кода. Одним из таких инструментов является Git. Чтобы сократить время развёртывания, разработчикам и системным администраторам нужна автоматизация. Git — один из самых популярных инструментов для этой цели. В этом руководстве мы покажем вам, как использовать Git Hooks, или хуки Git, чтобы повысить эффективность вашего проекта VPS!

Git hooks — внутренняя утилита, которая улучшает использование Git. Давайте узнаем, как именно они работают!

Что Такое Git?

Перед тем, как перейти к хукам, давайте быстро разберёмся в том, что такое Git.

Git — это приложение контроля версий с открытым исходным кодом. С его помощью мы можем следить за разработкой программного обеспечения.

Git очень популярен среди разработчиков. Его используют для большинства проектов с открытым исходным кодом.

Что Такое Git Hooks (Хуки)? 

С Git мы можем создавать ветки разработки, регистрировать изменения и полностью контролировать версии. Однако этот процесс можно автоматизировать. Автоматизация Git работает на уровне программ и развёртывания. Вот для чего нужны hooks.

Git Hooks — скрипты оболочки, которые запускаются автоматически до или после того, как Git выполняет важную команду, такую как Commit или Push. Чтобы хук работал, необходимо дать системе Unix разрешения на выполнение. Используя эти скрипты, мы можем автоматизировать определённые вещи.

Git создаёт примеры Git hooks, как только запускается локальный репозиторий. Следует отметить, что такие сайты, как GitHub или GitLab, не разрешают использовать их в первую очередь. Вот почему они в основном используются в местных или частных случаях.

Как Использовать Git Hooks

Hooks (хуки) хранятся в папке .git/hooks/ каждого клонированного проекта или в новосозданном локальном репозитории. Там мы найдём серию примеров хуков, которые являются хорошей отправной точкой.

Чтобы активировать хук, просто создайте файл и сохраните его в папке .git/hooks/. Тем не менее, Git предопределяет имя файла. Вот некоторые из хуков, которые мы можем использовать:

Git HookКоманда Git Описание
applypatch-msg.samplegit amКогда сообщение патча изменено
commit-msg.samplegit commitЧтобы включить сообщения о совершении действия (push)
fsmonitor-watchman.samplelaunch watchmanИнтеграция Watchman (служба просмотра файлов)
post-update.samplegit pushОбновление данных после отправки
pre-applypatch.samplegit amПеред применением патча
pre-commit.sample git commitПеред публикацией (commit)
prepare-commit-msg.samplegit commitКогда сообщение публикации (commit) установлено
pre-push.samplegit pushПрежде чем совершить действие (push)
pre-rebase.samplegit rebaseПрежде чем сделать передачу (pass) или слияние (merge) 
pre-receive.sample git pushКогда мы совершаем действие (push) и получаем данные из удалённого хранилища
update.samplegit pushОбновление удалённых данных одним действием (push).

Как мы видим, каждый хук выполняет команду в Git. Это стоит учитывать в случаях, когда его удобно применить.

Примеры Git Hook-ов

Использование Hooks очень распространено, но для того, чтобы раскрыть их потенциал полностью, необходимо знание Bash и других языков, таких как Python или Ruby. Вот несколько основных примеров:

Отображение Информации о Коммите

Этот пример показывает информацию о коммите. Создайте файл с именем prepare-commit-msg в папке .git/hooks/ нашего репозитория. Затем пропишите следующий скрипт:

!/bin/sh

SOB=$(git config github.user)
grep -qs "^$SOB" "$1" || echo ". Cambio por @$SOB" >> "$1"

Затем сохраните его. И установите права на выполнение файла.

:~$ chmod +x prepare-commit-msg

С помощью этого простого хука, когда совершается коммит, мы немедленно получаем соответствующую информацию о нём.

Генерация Документации при Внесении Изменений

Этот pre-push hook позволяет генерировать документацию нашего кода, если у нас есть генератор. Каждый раз, когда мы вносим изменения, документация будет формироваться автоматически.

Создайте pre-push в той же папке, что и раньше, и добавьте скрипт:

!/bin/bash

doxygen Doxyfile
git add docs/
git commit -m "Update documentation ($(date +%F@%R))"

Сохраните файл и, наконец, установите разрешение на выполнение.

:~$ chmod +x pre-push

Поиск и Исправление Конечных Пробелов в Коммитах

Этот pre-commit Git hook довольно просто реализовать. Создайте файл с именем pre-commit и добавьте следующее:

!/bin/bash -l

.git/hooks/pre-commit-master-no-no
if [[ $? == 1 ]]
then
exit 1
fi

.git/hooks/pre-commit-debugger
.git/hooks/pre-commit-trailing-spaces
.git/hooks/pre-commit-images
.git/hooks/pre-commit-pair

Теперь конечные пробелы (trailing whitespace) будут найдены и исправлены во всех коммитах.

Выводы

Git является жизненно важным инструментом для современных разработчиков. Git Hooks — отличный способ оптимизировать этот инструмент! Сегодня мы рассмотрели фундаментальную концепцию автоматизации процессов Git с помощью хуков (hooks).

Создание скрипта для Git Hooks может быть сложным, если у вас нет прочной базы — знаний языка программирования, например bash.

С помощью этого руководства, вы сделали первый шаг к изучению использования Git Hooks. Рекомендуем следовать официальной документации, чтобы продолжить учебный процесс!

Автор

Author

Olha L. / @olha

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

Похожие руководства

Оставьте ответ

Комментарий*

Имя*

Email*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Присоединиться к Hostinger сейчас!