Administrator
Published on 2023-05-06 / 91 Visits
0
0

gitlab 做commit MSG信息校验

在多人协作项目,如果代码风格统一、提交信息准确,那么在后期协作以及BUG处理时会更加方便。

※1.所以在gitlab服务端配置一个校验器防止乱提交不好追溯提交的代码信息,制作了一个小工具来校验

# 这边使用的是docker部署的gitlab 所以配置在/etc/gitlab/gitlab.rb,也是挂载出来的,在外部修改则自行重启容器,本次演示在容器内修改
vim /etc/gitlab/gitlab.rb
gitaly['custom_hooks_dir'] = "/var/opt/gitlab/gitaly/custom_hooks"   #匹配一下,取消注释,以及添加路径

mkdir /var/opt/gitlab/gitaly/custom_hooks/pre-receive.d

#touch 一个文件名字为pre-receive
touch pre-receive
#############################################如下为文件脚本内容,根据自己需要在修改
#!/bin/bash
# 从标准输入获取本次提交的commit id及分支的信息
read normalInput
ARR=($normalInput)
parentCommitId=${ARR[0]}
currentCommitId=${ARR[1]}
branch=${ARR[2]}
echo "您提交的分支为:$branch"
# 获取coomit的信息,用户,邮箱,msg等
user=$(git log --pretty=format:"%an" $currentCommitId -1)
echo "提交者为:$user"
commitDate=$(git log --pretty=format:"%cd" $currentCommitId -1)
echo "提交日期为:$commitDate"
msg=$(git log --pretty=format:"%s" $currentCommitId -1)
echo "提交的注释为:$msg"
flag=$(echo $msg | grep -E "feat.*|fix.*|refactor.*|ci.*|docs.*|perf.*|style.*|build.*|del.*|test.*|revert.*|Merge.*")
if [ -z "$flag" ]; then
echo "[ERROR]提交信息校验未通过,需以 feat|fix|refactor|ci|docs|perf|style|build|del|test|revert|Merge 开头"
exit 1
fi
############################################
#然后重载配置文件
gitlab-ctl reconfigure

Comment