Этот документ определяет формат сообщений коммитов, используемый в проекте.
Основная цель — сделать историю Git понятной, упростить отладку, генерацию заметок о релизах и проведение код-ревью.
type(scope)!: краткое описание
TASK-123: описание
TASK-456: описание
- дополнительные изменения
- дополнительные изменения
BREAKING CHANGE: описание
Первая строка должна кратко описывать основную цель коммита.
type(scope): summary
Примеры:
feat(auth): add OAuth2 authentication
fix(vfs): prevent file descriptor leak
refactor(cache): simplify eviction logic
| Тип | Описание |
|---|---|
| feat | Новый функционал |
| fix | Исправление ошибки |
| refactor | Внутренний рефакторинг без изменения поведения |
| perf | Улучшение производительности |
| docs | Изменения в документации |
| test | Добавление или изменение тестов |
| build | Изменения системы сборки |
| ci | Изменения CI/CD |
| chore | Прочие служебные изменения |
| revert | Откат предыдущего коммита |
Scope должен обозначать подсистему, которую затрагивает изменение.
Примеры:
(auth)
(vfs)
(http)
(core)
(sql)
(config)
(storage)
Требования:
Хорошо:
fix(vfs): prevent double free
Плохо:
fixed VFS bug.
Если коммит относится к задачам, перечислите их сразу после заголовка.
Пример:
TSMSRV-12: migrate storage backend
TSMSRV-45: update migration scripts
Каждая строка должна кратко описывать, что было сделано в рамках соответствующей задачи.
Изменения, не относящиеся напрямую к конкретной задаче, следует перечислять списком.
Пример:
- add CASdir configuration option
- remove obsolete helper functions
- update migration documentation
Если коммит нарушает обратную совместимость, добавьте:
BREAKING CHANGE: описание
Пример:
BREAKING CHANGE: legacy WebDAV API has been removed.
Не используйте расплывчатые формулировки:
may be breaking
possibly breaking
Коммит либо содержит несовместимые изменения, либо нет.
refactor(vfs)!: migrate storage to core VFS
TSMSRV-5: move WebDAV integration
TSMSRV-1: migrate core VFS
TSMSRV-6: add SQL tables and indexes
- add CASdir config option
- remove fake VFS implementation
- remove legacy files API
BREAKING CHANGE: legacy WebDAV handlers and fake VFS have been removed.
Один коммит должен представлять одно логическое изменение.
Предпочтительно:
Не объединяйте в одном коммите несвязанные изменения.
Крупные миграции могут объединять несколько тесно связанных задач, если их разделение сделает историю менее понятной.
Не используйте бессмысленные описания:
Вместо этого всегда описывайте, что именно было изменено.