每个开发都有自己偏好的提交信息写法,比如
CRT-436 used constants as parameter names
BA2-295 - Put check for associate flow to view Calendar button
Switch back to applying boost rules by default; add
以上是我看到的几种例子。有的人喜欢在提交信息里加上工单号,有的人不想加;有的人喜欢用过去式,有的人喜欢用小写。这样的不统一导致审美的困难。
NPM 里有很多很方便的 commit linter 例如 commitlint. 通过配置文件和命令,能够统一提交时的消息规则,例如大小写,格式等等。
我希望能把消息格式检测流程也放在 maven 生命周期中,使得 CICD 的时候能一并检查到.
经过几天时间开发,本人初步完成了这个 Maven Plugin,目前已经发布到 Maven Repository.
加入插件
<plugin>
<groupId>ga.rugal.maven</groupId>
<artifactId>commitlinter-maven-plugin</artifactId>
<version>THE-VERSION-YOU-LIKE</version>
</plugin>
添加配置
<configuration>
<matchPattern>([\w\s]+-\d+:\s)(.*)</matchPattern>
<failOnError>true</failOnError>
<captureGroups>
<captureGroup>
<max>10</max>
<min>2</min>
<caseFormat>LOWERCASE</caseFormat>
</captureGroup>
<captureGroup>
<max>20</max>
<caseFormat>SENTENCECASE</caseFormat>
</captureGroup>
</captureGroups>
</configuration>
该配置下我们会将提交信息分为两组,第一组为工单信息,第二组为提交内容。
所以一个符合本配置的提交信息应该形如:
ABC-123: Lower case
试验一下
mvn commitlinter:validate
在本配置下,不匹配的提交会被拒绝
[rugal@ubuntu Almanac]> mvn commitlinter:validate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Daily almanac for Programmer 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- commitlinter-maven-plugin:1.1:validate (default-cli) @ almanac ---
[INFO] Linting: [enable checkstyle]
[ERROR] Case format should be SENTENCECASE
[ERROR] Length should be no more than 10
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
而匹配的提交则会通过。
[rugal@ubuntu Almanac]> mvn commitlinter:validate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Daily almanac for Programmer 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- commitlinter-maven-plugin:1.1:validate (default-cli) @ almanac ---
[INFO] Linting: [ABC-123: Enable checkstyle]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.698 s
[INFO] Finished at: 2017-11-25T00:18:28-05:00
[INFO] Final Memory: 18M/175M
[INFO] ------------------------------------------------------------------------
这样,如果提交信息不符合规定的格式,CI 就会将其拒绝。这样便可以更好的统一提交信息啦。
欢迎大家参与该项目的开发,希望和大家互相学习。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.