Files
specification/CONVENTIONAL_COMMITS.MD
2025-09-29 15:47:07 +03:00

112 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Соглашение о коммитах
Расширенное соглашение, основанное на ["Соглашении о коммитах" 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"_