Inconventional Commits

 

前言

我一直试着遵循Conventional Commits,但并不认可它的一些规则。

比如说:feat(lang): add Polish language——你管这叫feat?这有新功能?

比如说:docs: correct spaces of CHANGELOG——docs/style/chore都完全可以适用,为什么一定是docs?

鉴于这个过于混乱,我个人稍微整合了一下,作为自己的commit规范。没提到的都和Conventional Commits一样。

因为比较不conventional,所以取了Inconventional Commits这个名字。

正文

去除了revert,删除某个以前有的东西应当在类别前加-,如-feat。后面的内容依然是对此commit本身的描述。

对于scope,如果三秒内想不出来就不要写。

fix和feat应当仅在不满足其它任何类别的情况下使用。

类别 说明 示例
init 初始化项目 init
docs 注释、文档(包含内容、失效URL修复、错误内容修改,不包含typo或style) docs: add WebExtension
chore 杂项(格式化、修改标点或换行等等,完全不影响代码和文档本身功能) chore: style; chore: clean build logs after build
ci CI ci: clone with --depth 1
test 测试 test: add Spotify.apk
deps 依赖(不包含CI依赖) deps: bump openai to 1.0.0; -deps: revert alembic to 1.13.1; deps: bump
perf 性能 perf: skip resource analyzing in build
refactor 重构,对代码功能文档内容无影响,但是使调用关系目录结构等更清晰。 refactor: make Password a class
release 发布新版本。只应涉及版本号更改和git tag release: 1.0.0
logic 运行逻辑,对用户不可见,但对程序执行或达成目标的路径有比refactor大的影响。 logic: skip page elements extraction
feat 增加/移除功能。注意,此处的“功能”是在用户层面的具体感受,而非某个全新API返回字段等。 feat: reset password
fix 代码中的bugfix fix: known_activities not used

以下内容为每个项目本身特有的,可以视情况选用,作为原Conventional Commits中混乱的feat的扩展。

类别 说明 示例
i18n 国际化  
a11y 无障碍化  
security 安全性  
ui UI / UX  
prompt LLM prompt  
conf 配置值更改  
log 日志  
eval 论文中的Evaluation相关  
tool 辅助开发的工具