Как сделать Git-hook для принуждения к правильному формату сообщения коммита?

Для принуждения к правильному формату сообщения коммита в Git можно использовать Git-хук (Git hook). Git-хуки представляют собой скрипты, которые автоматически выполняются в определенных моментах работы с Git. В данном случае, нам нужно создать Pre-Commit хук, который будет проверять формат сообщения коммита перед его выполнением.

Прежде всего, необходимо определить желаемый формат сообщения коммита. Обычно используется формат, называемый "Conventional Commit Format", который предполагает следующую структуру сообщения коммита:

<тип>(<область>): <краткое описание>

<опциональное подробное описание>

Например:

feat(auth): add user authentication

Это означает, что была добавлена возможность пользовательской аутентификации.

Чтобы создать Pre-Commit хук для проверки формата сообщения коммита, нужно выполнить следующие шаги:

Шаг 1: Перейдите в корневую директорию вашего Git-репозитория.

Шаг 2: Создайте новый скрипт pre-commit в папке .git/hooks:

touch .git/hooks/pre-commit

Шаг 3: Откройте созданный файл в текстовом редакторе:

vi .git/hooks/pre-commit

Добавьте следующий скрипт в файл pre-commit:

#!/bin/sh

commit_msg=$(head -n1 $1)

if ! echo "$commit_msg" | grep -qE '^w+(.+): .+'; then
  echo "Commit message format is invalid! Please use the Conventional Commit Format."
  exit 1
fi

Шаг 4: Сохраните и закройте файл.

Шаг 5: Сделайте файл pre-commit выполнимым:

chmod +x .git/hooks/pre-commit

Теперь, при каждом коммите, скрипт pre-commit будет проверять формат сообщения коммита. Если формат не соответствует ожидаемому, коммит будет отклонен и будет выведено сообщение об ошибке.

Хотя предложенный скрипт проверяет только сам формат сообщения коммита, можно легко настроить более сложную логику проверки, например, чтобы проверять наличие определенных ключевых слов или ссылаться на шаблон сообщения коммита.

Надеюсь, это поможет вам создать Git-хук для принуждения к правильному формату сообщения коммита в вашем проекте!