diff --git a/CONVENTIONAL_COMMITS.MD b/CONVENTIONAL_COMMITS.MD new file mode 100644 index 0000000..8193faa --- /dev/null +++ b/CONVENTIONAL_COMMITS.MD @@ -0,0 +1,111 @@ +# Соглашение о коммитах + +Расширенное соглашение, основанное на ["Соглашении о коммитах" v1.0.0](https://www.conventionalcommits.org/ru/v1.0.0/). + +Текущая редакция документа: 2025-07-30. + +## Главное + +- Сообщения коммитов должны быть следующей структуры: + + ``` + <тип>(<необязательный контекст>): <краткое описание> + + <необязательное тело> + + <необязательная(ые) сноска(и)> + ``` + +- Первая строка сообщения коммита ("краткое описение") не должна превышать [72 символов](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) + +## Тип коммита + +Стандартный набор типов, предлагаемый настоящим соглашением. + +| Тип | Назначение | +|:-------|:-------------------------------------------------------------------------------------------------------------------------------------| +| build | изменения влияющие на сборку проекта | +| docs | изменения влияющие на документацию | +| add | изменения добавляющие новый функционал или другие особенности | +| tweak | изменения влияющие на существующий функционал или на другие особенности | +| fix | изменения исправляющие какие-либо ошибки | +| remove | изменения удаляющее существующий функционал или другие особенности | +| revert | изменения откатывающие изменения другого коммита | +| perf | изменения направленные на улучшение производительности (performance) | +| refac | изменения НЕ исправляющие ошибки, НЕ добавляющие нового функционала или особенностей и НЕ изменяющие существующей логики функционала | +| style | изменения влияющие только на внешний вид кода или документа; форматирование | +| test | изменения влияющие на тестирование | + +### Breaking change + +Коммит заканчивающийся восклицательным знаком `!` после **типа** или **контекста** означает, что в коммите введены +изменения, которые **ломают обратную совместимость**. + +Примеры: + +> refac!: полная реструктуризация проекта + +> remove(api)!: поддержка API 1.0 + +### Merge commit + +Единственное исключение из общего формата сообщений. Оформляется так, как это делает Git или IDE. + +## Контекст коммита + +Стандартный набор контекстов, предлагаемый настоящим соглашением. + +| Контекст | Описание | +|:---------|:--------------------------------------------------| +| git | изменения влияющие на настройки репозитория (Git) | +| ide | изменения влияющие на настройки IDE | + +## Описание коммита + +Описание коммита должно быть кратким и записано в повелительном наклонении. +Так же следует избегать начинать **краткое описание коммита** со слов "добавлено", "исправлено" и другие, т.к. они уже +указаны в **типе коммита**. + +Рекомендуется формировать **краткое описание** таким образом, чтобы им можно было закончить фразу +_"Если этот коммит применить, то будет ..."_ + +# Примеры + +**Добавление нового функционала** + +> add: авторизация пользователя + +_"Если этот коммит применить, то будет ..."_ +_"... добавлена ..."_ +_"... авторизация пользователя"_ + +**Рефакторинг, ломающий обратную совместимость** + +> refac!: полная реструктуризация проекта + +_"Если этот коммит применить, то будет ..."_ +_"... полная реструктуризация проекта"_ + +**Поправлен `.gitignore`** + +> add(git): игнорирование файлов VSCode + +_"Если этот коммит применить, то будет ..."_ +_"... добавлено ..."_ +_"... игнорирование файлов VSCode"_ + +**Изменения в системе сборки проекта** + +> build: задействован Github Actions + +_"Если этот коммит применить, то будет ..."_ +_"... задействован Github Actions"_ + +**Удаление поддержки старого API** + +> remove(api)!: поддержка API 1.0 + +_"Если этот коммит применить, то будет ..."_ +_"... удалена ..."_ +_"... поддержка API 1.0"_ + diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..56ba069 --- /dev/null +++ b/README.MD @@ -0,0 +1,10 @@ +# Репозиторий "Соглашения о коммитах" + +В этом репозитории хранится документ [о соглашении о коммитах](CONVENTIONAL_COMMITS.MD). + +## Полезные статьи + +- [Соглашение о коммитах v1.0.0](https://www.conventionalcommits.org/ru/v1.0.0/) +- [A Note About Git Commit Messages / tbaggery](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) +- [Как генерировать осмысленные коммиты. Применяем стандарт Conventional Commits / Хабр](https://habr.com/ru/companies/yandex/articles/431432/) +