golang自动化git提交信息格式校验插件gommit的使用
Golang自动化Git提交信息格式校验插件Gommit的使用
Gommit是一个用于分析Git提交信息以确保其遵循定义模式的Golang工具。
安装
从发布页面下载适用于您架构的gommit二进制文件。
配置
定义.gommit.toml文件
在项目根目录创建.gommit.toml
文件,例如:
[config]
exclude-merge-commits=true
check-summary-length=true
summary-length=50
[matchers]
all="(?:ref|feat|test|fix|style)\\(.*?\\) : .*?\n(?:\n?(?:\\* | ).*?\n)*"
[examples]
a_simple_commit="""
[feat|test|ref|fix|style](module) : A commit message
"""
an_extended_commit="""
[feat|test|ref|fix|style](module) : A commit message
* first line
* second line
* and so on...
"""
配置项说明
exclude-merge-commits
: 如果设置为true,将不检查合并提交的消息check-summary-length
: 如果设置为true,检查提交摘要长度,默认为50个字符summary-length
: 可以覆盖默认的摘要长度值(50),仅在check-summary-length为true时使用
匹配器(Matchers)
您可以定义任意数量的正则表达式匹配器,命名由您决定,它们都将与提交消息进行比较,直到一个匹配成功。
示例(Examples)
提供示例帮助用户理解问题所在,与匹配器一样,您可以定义任意数量的示例,如果发生错误,它们都将显示给用户。
使用方式
基本命令
确保您的提交信息保持一致
用法:
gommit [command]
可用命令:
check 检查确保消息遵循定义的模式
version 显示应用版本
标志:
--config string (默认 ".gommit.toml")
-h, --help 帮助信息
使用 "gommit [command] --help" 获取命令的更多信息
check命令
检查确保消息遵循定义的模式
用法:
gommit check [flags]
gommit check [command]
可用命令:
commit 检查提交消息
message 检查消息
range 检查提交范围内的消息
标志:
-h, --help 帮助信息
全局标志:
--config string (默认 ".gommit.toml")
使用 "gommit check [command] --help" 获取命令的更多信息
check commit
检查提交消息
用法:
gommit check commit [id] [&path] [flags]
标志:
-h, --help 帮助信息
全局标志:
--config string (默认 ".gommit.toml")
检查一个提交(目前不支持短ID):
gommit check commit aeb603ba83614fae682337bdce9ee1bad1da6d6e
check message
检查消息
用法:
gommit check message [message] [flags]
标志:
-h, --help 帮助信息
全局标志:
--config string (默认 ".gommit.toml")
检查一条消息,在脚本中很有用,例如当您想将其与git钩子一起使用时:
gommit check message "Hello"
check range
检查范围内的消息
用法:
gommit check range [revisionfrom] [revisionTo] [&path] [flags]
标志:
-h, --help 帮助信息
全局标志:
--config string (默认 ".gommit.toml")
检查提交范围,如果您想在CI中使用它来确保分支中的所有提交都遵循您的约定,这很有用:
- 使用相对引用:
gommit check range master~2^ master
- 使用绝对引用:
gommit check range dev test
- 使用提交ID(目前不支持短ID):
gommit check range 7bbb37ade3ff36e362d7e20bf34a1325a15b 09f25db7971c100a8c0cfc2b22ab7f872ff0c18d
实际应用
Git钩子
可以使用gommit在创建每个提交时验证它们。为此,您需要使用commit-msg
钩子,您可以用以下脚本替换默认脚本:
#!/bin/sh
gommit check message "$(cat "$1")";
Travis CI
在Travis中,默认情况下不会克隆所有历史记录,默认深度为50次提交。首先,我们从发布页面下载二进制文件,并在.travis.yml
中添加:
before_install:
- wget -O /tmp/gommit https://github.com/antham/gommit/releases/download/v2.0.0/gommit_linux_386 && chmod 777 /tmp/gommit
然后我们可以添加一个Perl脚本来分析针对master的提交范围:
#!/bin/perl
`git ls-remote origin master` =~ /([a-f0-9]{40})/;
my $refHead = `git rev-parse HEAD`;
my $refTail = $1;
chomp($refHead);
chomp($refTail);
if ($refHead eq $refTail) {
exit 0;
}
system "gommit check range $refTail $refHead";
if ($? > 0) {
exit 1;
}
最后在.travis.yml
中,使其在出错时崩溃:
script: perl test-branch-commit-messages-in-travis.pl
CircleCI
在CircleCI(2.0)中,有一个描述当前分支的环境变量:CIRCLE_BRANCH
。首先,我们从发布页面下载二进制文件,并在.circleci/config.yml
中添加:
- run:
name: Get gommit binary
command: |
mkdir /home/circleci/bin
wget -O ~/bin/gommit https://github.com/antham/gommit/releases/download/v2.0.0/gommit_linux_386 && chmod 777 ~/bin/gommit
然后我们可以针对master运行gommit:
- run:
name: Run gommit
command: |
if [ $CIRCLE_BRANCH != 'master' ]; then ~/bin/gommit check range $(git rev-parse origin/master) $CIRCLE_BRANCH ; fi
第三方库
Nodejs
- gommitjs: 一个Nodejs的gommit包装器
更多关于golang自动化git提交信息格式校验插件gommit的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html