利用工具提升代码质量-规范化Git Commit

在之前的文章里,我已经介绍了commitlint,standard-version来约束提交信息,最终生成漂亮的changelog,但是提交信息毕竟有一定的格式,人工去注意还是很繁琐,如果有个表单能够辅助书写就好了。好在确实有这样一个插件,且开源。

commit-template-idea-plugin

使用上,有几点注意

  1. 这几个字段如何填写,网上资料很多,这里简单聊下

    • type 类别,善用类别,关于type,点开看下各个类别的描述,自然就懂,注意style type说的是风格而非CSS样式

    • scope 这里没有明确的限制,你可以写业务上的scope,或者技术范畴的scope

    • description 这次提交执行了什么任务,比如set btn background red 等等

    • long description 提交描述的加长版

    • closed issue 对于我们日常做项目,往往每次提交都会关联一些卡号,这里要求必须填写,比如jira ticket,比如gitlab issue

      这里highlight一点就是type,breaking change决定版本号的变化程度,如果你有breaking
      change,大版本号加1,如果你是feat,中版本号加1,如果是fix一个bug,自然是补丁号加一。连带着想想,package包,我们为什么有些事~,有些^,有些写死版本号呢。这都是有原因的,背后实际上就是semver

      对于description,我看过Google对此的实践,你假设你是在给计算机下达命令,而命令的执行内容就是你提交的代码。以这种口吻去写就行了。

  1. 插件提供了2个功能,注意截图我选中的区域,如果每次都提交信息,从头输入实际上是很累的,好在这个插件提供了第二个操作,点击第二个图标,会显示历史提交信息列表,这样你完全可以选择一个,然后微调即可。
  2. 提交信息历史是项目级的,跨项目并不共享
  3. 在输入issue号的时候一定要以#为前缀, 否则与此配合使用的standard-version生成changelog时无法识别issue号

当前该插件不足的地方

  1. 项目下,我们有时会个性化设定自己的提交信息的change type,配置在.versionrc.json中,但是该插件并不支持读取这个配置文件。
  2. 通过插件编写提交信息后点击确认,实际上是插件将表单文本拼接成一段文本,但这个过程是不可逆的,如果你觉得填写错误了,想点击表单填写,你只能重新编写。当前我的建议是如果微调,直接在最终文本书写即可

一条漂亮的Commit

请将Angular项目的提交信息作为你的训练目标,至少我觉得真棒。

注意,合格的commit不只是以上填写的内容,本身还有提交人名字,提交人邮箱,即user.name,user.email,但因为平时大家可能本身就已经玩过Git,这时会出现工作项目提交的名字不符合要求,我曾见过一个人出现3-4个提交名称的问题,原因就是多个项目平台存在配置冲突问题。平时叫A,公司项目提交需要是B才对,各个项目都具体配置过于麻烦,全局修改又会影响非公司的项目,比如自己的私人GitHub。

怎么办呢,Git配置提供了条件指令,所以可以根据你的文件夹路径自动条件化走不通的配置,具体戳这里

写在最后

  • 看过很多人漠视提交信息,其实提交信息的重要性很大,更大的意义是历史,是描述每次提交在干嘛。举例,每个迭代我们需要向领导汇报我们做了什么,如果有良好的commit,我们可以很快生成一个changlog,通过这个changelog,我们知道了改了几个bug,增加了几个feat,关联的卡号,也也可以直接打通jira或者Gitlab。因为提交信息的准确性,如果是个公共库,我们还可以很安全的控制住版本号,对于适用方也可以知道该不该升级。这些就是benefit,但是假如没有这个实践和规范的话,对不起,体力活交给你,自己查,自己写,当然还有可能有遗漏。所以最节约时间的往往是规范及自动化。
  • 上面聊到了当前插件的不足,但仍注意,它是开源的,所以你懂的。在实际使用中,如果有动力,有精力,可以贡献,可以二次定制开发。当然这就靠个人了。

commit=》changelog=》semver,好的commit才可以出可观的chagelog,进而语意化版本。