agny/commit-convention

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

pkg:composer/agny/commit-convention

dev-main 2025-04-19 09:03 UTC

This package is not auto-updated.

Last update: 2025-12-27 12:24:09 UTC


README

Единый стандарт именования коммитов делает историю изменений понятной и удобной для работы. Он помогает:

Быстро понимать суть изменений по заголовку коммита
Автоматически генерировать changelog на основе структурированных сообщений
Упрощать поиск по истории (например, исправлений багов или новых фич)
Поддерживать порядок в командной разработке

Этот репозиторий содержит:

  1. Конвенцию именования коммитов — правила оформления сообщений.
  2. Git-хук на PHP — автоматическую проверку соответствия коммитов заданному формату.

Хук можно установить:

  • Глобально — для всех репозиториев на вашей системе.
  • Локально — только для текущего проекта (через Composer).

Подробнее о правилах: см. CONVENTION.md.

Установка

Глобальная (для всех репозиториев)

  1. Склонируйте репозиторий:
    git clone https://github.com/agny/commit-convention.git
    cd commit-convention
    
  2. Установите хук:
    make install
    

    Если глобальная директория хуков не установлена в Git, она будет создана автоматически (~/.git-hooks).

Локальная (для одного проекта)

  1. Добавьте пакет как dev-зависимость:
    composer require --dev agny/commit-convention
    
  2. Активируйте хук:
    vendor/bin/commit-convention-hook install
    

Конфигурация

Настройки проверки коммитов задаются в файле commit-convention.json в корне проекта.
Пример полной конфигурации со значениями по умолчанию:

{
  "descriptionRequired": false,
  "messageRequireTrailingDot": true,
  "mainTags": "initial|new|fix|update|refactor|opt|optimization|tweak",
  "additionalTags": "#145|README.md|custom-tag|module_name|feature|ui|api...",
  "messageMaxLength": 100,
  "messageWarningLength": 80,
  "formatHint": "[основной_тег][уточняющий_тег] Сообщение коммита.\n\nОписание..."
}

Параметры конфигурации

ПараметрОписание
descriptionRequiredТребовать обязательное описание коммита после пустой строки
messageRequireTrailingDotОбязательная точка в конце сообщения коммита
mainTagsОсновные теги (разделены \|).
additionalTagsДополнительные теги/модификаторы (разделены \|).
messageMaxLengthМаксимальная длина сообщения коммита (в символах)
messageWarningLengthДлина сообщения, при которой выводится предупреждение
formatHintПодсказка формата, которая показывается при ошибке

Приоритет настроек

  1. Параметры из commit-convention.json в корне проекта
  2. Встроенные значения по умолчанию из CommitConventionConfig

Дополнительные рекомендации:

  1. Для отключения проверки точки в конце сообщения:
    {"messageRequireTrailingDot": false}
    
  2. Чтобы разрешить любые теги:
    {"mainTags": ".+"}
    
  3. Для многострочных подсказок используйте \n:
    {
      "formatHint": "Формат:\n[тип][модуль] Заголовок\n\nОписание (не обязательно)"
    }
    

📜 Лицензия

Проект распространяется на условиях «ОТКРЫТОЙ ЛИЦЕНЗИИ РФ» версии 1.0
SPDX-Identifier: LicenseRef-OpenRF-1.0
Полный текст: LICENSE.md