0Pricing
DevOps Bootcamp · Урок

Разбор перехватчиков Git

Изучите разные типы перехватчиков Git и этапы их выполнения в рабочем процессе Git.

«Разбор перехватчиков Git» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Что такое хуки Git?

Добро пожаловать в мир хуков Git! Хуки Git — это мощные настраиваемые скрипты, которые Git автоматически выполняет до или после таких событий, как создание фиксации, отправка изменений или получение отправленных фиксаций.

Представляйте их как автоматические контрольные точки или действия в рабочем процессе Git. Они помогают соблюдать стандарты проекта, автоматизировать задачи и интегрироваться с другими системами.

Где находятся хуки

Каждый репозиторий Git содержит каталог .git/hooks. В нём находятся примеры скриптов хуков (обычно с расширением .sample).

Чтобы активировать хук, просто удалите расширение .sample и сделайте файл исполняемым. После этого Git будет запускать его в нужный момент.

  • Расположение: .git/hooks/
  • Файлы: скрипты оболочки (Bash, Python, Ruby и другие)
  • Активация: переименовать и сделать исполняемым

Клиентская и серверная стороны

Хуки Git делятся на два основных типа в зависимости от места выполнения:

  • Клиентские хуки: выполняются на Вашем локальном компьютере (например, перед созданием фиксации или перебазированием). Они предназначены для автоматизации личного рабочего процесса и соблюдения локальных правил.
  • Серверные хуки: выполняются на удалённом сервере Git (например, когда Вы отправляете код в общий репозиторий). Они обеспечивают соблюдение правил проекта для всех участников.

Клиентский хук: pre-commit

Хук pre-commit — один из самых распространённых клиентских хуков. Он выполняется *до* того, как Git официально создаст фиксацию.

Если скрипт pre-commit завершается с ненулевым кодом состояния, Git отменяет создание фиксации. Это удобно для таких задач, как:

  • проверка стиля кода
  • запуск модульных тестов
  • проверка наличия больших файлов или конфиденциальных данных

Клиентский хук: commit-msg

Хук commit-msg выполняется *после* ввода сообщения фиксации, но *до* окончательного создания фиксации.

Этот хук полезен для проверки соответствия сообщений фиксаций определённым соглашениям или форматам. Например, он может проверить:

  • начинается ли сообщение с ID задачи (например, [JIRA-123])
  • не превышает ли длина сообщения установленный предел
  • присутствуют ли определённые ключевые слова или отсутствуют ли они

Клиентский хук: post-commit

Хук post-commit выполняется *сразу после* успешного создания фиксации.

В отличие от pre-commit или commit-msg, этот хук не может изменить результат создания фиксации. Его часто используют для отправки уведомлений или интеграции, например для:

  • уведомления участников команды
  • обновления инструмента управления проектами
  • запуска сборки непрерывной интеграции (CI), хотя чаще для этого используются серверные хуки

Серверный перехватчик: pre-receive

Переходя к серверным перехватчикам, pre-receive выполняется до обновления любых ссылок (например, веток или тегов) в удалённом репозитории.

Этот перехватчик позволяет эффективно обеспечивать соблюдение важных правил репозитория, например:

  • запрещать прямую отправку изменений в ветку main
  • требовать, чтобы все фиксации были подписаны
  • проверять личность автора фиксации

Если этот перехватчик завершает работу с ненулевым кодом, вся отправка изменений отклоняется.

Серверный перехватчик: post-receive

Перехватчик post-receive запускается после того, как отправка изменений успешно обновила ссылки в удалённом репозитории.

Подобно post-commit, этот перехватчик не может отклонить отправку изменений. Обычно его используют для:

  • запуска конвейеров CI/CD
  • обновления внешних систем отслеживания задач
  • отправки уведомлений команде по электронной почте
  • развёртывания кода в промежуточной среде

Создание простого перехватчика

Чтобы создать перехватчик, достаточно создать файл с именем перехватчика (например, pre-commit) в каталоге .git/hooks/. Давайте создадим самый простой вариант:

#!/bin/sh

# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0

Разрешение на выполнение перехватчиков

После создания сценария перехватчика необходимо сделать его исполняемым. Иначе Git не будет его запускать. Используйте в терминале команду chmod:

chmod +x .git/hooks/pre-commit

Теперь при каждой попытке создать фиксацию Git будет выполнять этот сценарий!

Быстрая проверка: время запуска перехватчиков

Перехватчики Git запускаются в определённые моменты рабочего процесса. Понимание времени их запуска важно для эффективного использования.

Итоги: понимание перехватчиков Git

Вы сделали первый шаг в мощный мир перехватчиков Git!

  • Перехватчики Git — это сценарии, автоматизирующие действия во время событий Git.
  • Они находятся в каталоге .git/hooks/ вашего репозитория.
  • Перехватчики бывают клиентскими (на локальном компьютере) и серверными (в удалённом репозитории).
  • Такие важные перехватчики, как pre-commit и pre-receive, могут обеспечивать соблюдение правил, блокируя операции.
  • Перехватчики post-commit и post-receive предназначены для уведомлений или интеграций после выполнения действий.

Далее мы рассмотрим практические примеры реализации отдельных перехватчиков!

Часто задаваемые вопросы

Урок «Разбор перехватчиков Git» бесплатный?

Да — полный текст урока «Разбор перехватчиков Git» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Разбор перехватчиков Git»?

Изучите разные типы перехватчиков Git и этапы их выполнения в рабочем процессе Git. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Разбор перехватчиков Git»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Разбор перехватчиков Git
  2. Перехватчики до фиксации и после слияния
  3. Настройка конфигурации Git
  4. Общий доступ к хукам с Husky
← Назад к DevOps Bootcamp