大家日常中的项目有没有使用规范的Commit message提交格式?
关注者
327被浏览
32,34914 个回答
谢邀.
eggjs 团队采用了开源社区常用的一套规范,参见『
代码贡献规范 - 为企业级框架和应用而生』。
优点是:
- 清晰,直观
- 我们的 changelog 可以直接通过指令生成
完整格式如下:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
实际场景中通常是:
feat: all middleware support async function and common function
fix: deprecate warning when inspect & toJSON, close #408
docs: add quickstart.md
我们之前曾有考虑过是否用工具来检查,但后面并没有引入,人是有惰性的,如果有工具帮他检查了,他就不会进步了。
还有我们是通过 Pull Request 进行协作的,新人经过几次的 code review 后,很快就会形成本能了,不会写错。(同例,参与 egg 之前我的 git 操作必须用 sourcetree,现在基本上只用命令行。)
当然,reviewer 如果没注意,导致不对的 message 进入主干,那需要准备好大洋请吃饭,别问我为什么知道。
有兴趣可以围观下我们的 commit message 和 pull request:
说下我目前的结论,供参考哈:
提交规范基本继承angular.md conventional-changelog/angular.md at v0.5.3 · conventional-changelog/conventional-changelog · GitHub
使用commitizen,validate-commit-msg,配合使用husky(githooks)
commitizen是来规范格式的,validate-commit-msg配合husky来做commit message的格式校验的。
另外,这个需要本地客户端和git server hook一起搞哈~
下面是个参考例子:
{
"name": "commit-message-test",
"version": "0.0.1",
"scripts": {
"commitmsg": "validate-commit-msg",
"commit": "git-cz "
},
"devDependencies": {
"commitizen": "^2.3.0",
"validate-commit-msg": "^2.11.1",
"husky": "^0.13.1"
},
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
}