大家日常中的项目有没有使用规范的Commit message提交格式?

如果有,你们有没有使用工具去保证整个团队成员提交的格式信息符合规范? 看到我们团队的同学平时使用Git提交代码,对于Commit message并没有…
关注者
327
被浏览
32,349

14 个回答

谢邀.

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"
    }
  }
}