Именование коммитов



Conventional Commits я сам использую, тк это распространенный стандарт и под них есть тулинг, но лично мне не хватает точности в этом стандарте и я бы хотел видеть такую систему:



Название коммита должно состоять из 4 частей: фича (бизнес-сущность), техническая-сущность, тип изменения, описание (опционально). При этом фича может разделяться (точкой) на подфичи, а описание содержать номер задачи. Первые три части разделяются /, перед описанием ставится двоеточие:





const commitMessage =
${featureName}.${subFeatureName}/${techType}/${changeType}: ${issueNumber} ${description};





Примеры:



shopCard.amount/style/mod: #27 outline - изменили стиль аутлайна для инпута суммы на корзине

shopCard/test/add: #28 snapshots - добавлено снапшот-тестирование для корзины

app/build/fix: #29 reduce bundle size

charts/style/fix: overflow



Технические типы:



logic - business logic of user feature

style - view (UI) of user feature

util - utility functions and services

type - types definition

test - tests for functional

doc - description and specification

example - storybook, docz, etc

deps - third party dependency changes (replaces, forks, API improves)

perf - performance changes

pretty - prettify formating, white-space, missing semi-colons, etc

config: changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm), configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)



Типы модификаций



add - new functional

mod - modifying functional with behavior changes

fix - correcting functional without behavior changes (refactor, inner interface updates)

del - delete functional



Зачем? Такая система очень упрощает чтение истории и поиск по ней, форсит использовать атомарные комиты (надо писать что это и зачем?), позволяет хранить в комит месадже всю информацию об изменении, при этом оставляя его кратким.



P.S. хочу я это с 2019, но все руки не дойдут комитлинт донаписать.