В чём отличие client-side и server-side хуков?

Client-side хуки:
  • Запускаются локально на машине разработчика.
  • Используются для проверки commit messages, форматирования кода перед коммитом, и других локальных задач.
  • Обычно не контролируются централизованно. Разработчик может их обходить.
Server-side хуки:
  • Запускаются на сервере (например, GitLab, GitHub, Bitbucket).
  • Используются для применения политик, контроля качества кода, триггера интеграции/развертывания при push.
  • Контролируются централизованно и обычно не могут быть обойдены разработчиками. Более надежны для обеспечения соответствия требованиям.
Ключевое различие: Место выполнения и степень контроля.

Git hooks — это скрипты, которые Git выполняет автоматически до или после определенных событий, таких как commit, push и receive.

Различие между client-side и server-side хуками заключается в месте их выполнения и их назначении:

Client-side hooks (хуки на стороне клиента):

  • Выполняются локально на компьютере разработчика.
  • В основном используются для проверки commit-сообщений, форматирования кода, запуска тестов и других локальных задач перед отправкой изменений на удаленный репозиторий.
  • Не контролируются администратором репозитория и могут быть проигнорированы разработчиком (хотя это обычно не рекомендуется).
  • Расположены в каталоге .git/hooks локального репозитория.
  • Примеры: pre-commit, pre-push, commit-msg.
  • Главная цель: Обеспечить качество кода и соответствие стандартам до того, как он попадет в общий репозиторий. Предотвращение ошибок и несоответствий на ранних этапах разработки.

Server-side hooks (хуки на стороне сервера):

  • Выполняются на сервере, где размещен удаленный репозиторий.
  • Используются для применения политик репозитория, автоматизации развертывания, интеграции с системами отслеживания ошибок и других задач, связанных с управлением репозиторием.
  • Контролируются администратором репозитория и являются обязательными для всех, кто пушит изменения в репозиторий.
  • Расположены в каталоге .git/hooks удаленного репозитория (требуется доступ к серверу).
  • Примеры: pre-receive, post-receive, update.
  • Главная цель: Обеспечение безопасности и соответствия правилам всего репозитория. Автоматизация процессов, связанных с изменениями в репозитории.

Ключевое различие: Client-side хуки — это про локальные правила и удобство разработчика, а server-side хуки — это про правила и контроль на уровне всего репозитория.

Важно: Server-side хуки могут быть использованы для отклонения push-запросов, если они не соответствуют заданным критериям, тем самым обеспечивая контроль над качеством и безопасностью кода в репозитории.

0