dev-tools
Словарь ↗Conventional Commits (соглашение о коммитах)
Conventional Commits — соглашение о записи сообщений коммитов в машиночитаемой форме: тип, необязательная область и короткое описание — `fix(auth): отклонять просроченные refresh-токены` — плюс необязательные тело и футер для ломающих изменений и ссылок на задачи. Ценность не в аккуратности ради аккуратности. Как только сообщения несут тип, инструменты могут сгенерировать список изменений, определить следующую семантическую версию и запустить релиз без того, чтобы кто-то вёл эти сведения вручную. Именно это соответствие и распространило соглашение: исправление подразумевает патч-версию, функция — минорную, пометка о ломающем изменении — мажорную, и номера версий перестают быть решением, принимаемым на глаз в момент релиза. История становится и удобной для поиска: отфильтровать год коммитов до тех, что меняли поведение, а не форматирование, — по-настоящему полезная операция во время инцидента. Две оговорки не дают соглашению стать обрядом. Правило, навязанное линтером сообщений, но не подкреплённое ревью, порождает безупречно оформленные сообщения ни о чём: `fix(api): исправлен баг` удовлетворяет проверке и не помогает никому, а через полгода важнее всего именно описание. И тип должен отражать то, что изменение делает с потребителями, а не самоощущение автора: рефакторинг, меняющий ответ API, является ломающим изменением, каким бы внутренним он ни казался. Командам, схлопывающим пул-реквесты, стоит помнить, что в историю попадает сообщение схлопывания — соглашение должно соблюдаться именно там.
Похожие термины