使用git-chglog规范commit信息

Rhilip 2019-06-05 PM 4495℃ 1条

一个很好的git commit历史很容易帮助自己在code review的时候知道自己做了什么修改。在一段时间之前,我很喜欢使用以下格式,即一个emoji表情加一段文字说明。

:bug: Fix torrent link return miss....

摘自: https://github.com/Rhilip/Pt-Autoseed/commit/e776a9c19788d022e2d095fbebafe7705d154ca4

通过emoji表情,可以快速的定位到主要修改的作用,而文字也起到补充作用说明了。例如上面的例子就是一个bug fix,修复了链接丢失的情况。

详细的emoji表情列表可以参考以下两个网站:

而随着我开始写RidPT这个系统性的大工程时,以及当我需要自动化的生成CHANGELOG.md的时候,纯粹的emoji表情+文字说明变得不够方便。于是,我将目标瞄向了根据git commit log自动生成CHANGELOG的工具上,于是发现了这个 git-chglog

安装 git-chglog

git-chglog: https://github.com/git-chglog/git-chglog

作为使用go编写的跨平台工具,git-chglog的安装十分方便,只需要下载编译好的二进制文件,并将其放到$PATH中即可。

本人最近使用scoop作为Windows平台下软件包的管理工具。在本处介绍下scoop的安装方法。也十分简单。。。。装完scoop之后直接使用scoop install git-chglog即可,且会自动将其放入$PATH而不需要手动添加,过程如下:

TIM截图20190605193757.png

git-chglog使用

在食用前请看下大神写的 commit message介绍: https://github.com/pvdlg/conventional-commit-types
,以对于commit格式有所了解。
在git仓库中使用git-chglog --init即可进入该软件的交互创建过程。这里我以ronggang/PT-Plugin-Plus为示例:

TIM截图20190605194828.png

分别问了以下几个问题:

  • 仓库地址 (What is the URL of your repository?): 直接回车就行,软件会读.git目录下配置信息
  • 喜欢的样式(What is your favorite style?): 有github, gitlab, bitbucket, none 四种类型,一般根据你仓库托管的选就行。
  • Commit样式(Choose the format of your favorite commit message):同样有多个选项,对信息提取的完备性依次下降。
<type>(<scope>): <subject> -- feat(core): Add new feature
<type>: <subject>          -- feat: Add new feature
<<type> subject>           -- Add new feature
<subject>                  -- Add new feature (Not detect `type` field)
  • 生成CHANGLOG.md的样式(What is your favorite template style?): 提供三个选项 keep-a-changelog, standard, cool,以及参考示例。我观察了很久没发现大的区别,主要是commit的时间的位置以及样式不同。
  • Merge是否显示(Do you include Merge Commit in CHANGELOG?): 根据需求选择y/n
  • Revert是否显示(Do you include Revert Commit in CHANGELOG?): 根据需求选择y/n
  • 配置.chglog目录(In which directory do you output configuration files and templates?):默认即可,如果已经有重复文件存在会提示是否需要覆盖。

完成问题的回答之后,就可以使用git-chglog自动生成了。

如果并不带任何附加的话,默认是输出到stdout的,需要使用 git-chglog --output CHANGELOG.md 才能生成文件形式放在仓库根目录下。

PhpStorm中使用插件生成格式化commit信息

我们可以很简便的使用IDE的插件来生成格式化的commit信息,如我在PhpStorm中就使用Git Commit Template这款插件进行commit信息生成

TIM截图20190605205014.png

在每个对话框中输入信息后就可以点击OK键,格式化的commit信息就自动的放入了Commit Message中。其生成的格式如下:

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

使用git hook在提交commit的时候更新CHANGELOG.md

但是每次都需要键入git-chglog的形式生成CHANGELOG.md过于麻烦,我们可以使用git hook的形式,用钩子在我们commit之前进行CHANGELOG.md的更新。

创建 /.git/hooks/pre-commit文件,内容如下

#!/bin/sh
git-chglog -output CHANGELOG.md
exit 0;

这样,CHANGELOG.md的自动更新就不用我们去手动管理了。

非特殊说明,本博所有文章均为博主原创。

评论啦~



唉呀 ~ 仅有一条评论


  1. 荒野无灯
    荒野无灯

    R酱你这个typecho的全文输出有些问题。我用inoreader基本上没法看。

    回复 2020-05-04 11:35