一、打开gitlab相关配置项
vim /etc/gitlab/gitlab.rb
gitlab_shell['custom_hooks_dir'] = "/etc/gitlab/custom_hooks"
二、创建相关文件夹
mkdir -p /etc/gitlab/custom_hooks
mkdir -p /etc/gitlab/custom_hooks/post-receive.d
mkdir -p /etc/gitlab/custom_hooks/pre-receive.d
mkdir -p /etc/gitlab/custom_hooks/update.d
#将相关脚本放入对应目录
#!/usr/bin/env python3
import sys
import re
import subprocess
#import redis
refname = sys.argv[1]
oldrev = sys.argv[2]
newrev = sys.argv[3]
regex='([a-zA-Z0-9]+-\\d+)\\,\\s+.{10,}'
def check_message_format():
cmd='git rev-list '+oldrev+'..'+newrev
print(cmd)
p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
l= p.stdout.readlines()
for rev in l:
cmdsub="git cat-file commit "+rev.decode().strip('''\n''')+" | sed '1,/^$/d'"
p1 = subprocess.Popen(cmdsub,shell=True,stdout=subprocess.PIPE)
l1 = p1.stdout.readline()
print(l1)
result = re.match('([a-zA-Z0-9]+-\\d+)\\,\\s+.{10,}',l1.decode())
if result == None:
print("your commit msg should like : TEST-123, fix the wrong caution")
sys.exit(1)
sys.exit(0)
check_message_format()
三、使配置生效
gitlab-ctl reconfigure
效果:
一、提交代码格式为"jira项目问题编号, 注释信息",例如
git commit -m "SMGJ-120, 测试提交代码"
#注释信息可以中文也可以英文,但是标红处的字符不得少于10个字符。
![](https://file.jishuzhan.net/article/1709775981197135873/231dd5a020d0e276eb864b47cca404e0.webp)
![](https://file.jishuzhan.net/article/1709775981197135873/dc2529833e45579d7dbc9e7fdaa4ac8a.webp)
![](https://file.jishuzhan.net/article/1709775981197135873/fc08ab62a88ff150a84d5df11d822831.webp)
由于注释信息为6个字,所以被拦截,并且在报错中也给出样例"remote: your commit msg should like : TEST-123, fix the wrong caution"。
二、修改注释,重新提交代码
使用git commit --amend
修改注释信息为"SMGJ-120, 测试提交代码测试提交代码"
![](https://file.jishuzhan.net/article/1709775981197135873/0dea868d37b1025a2f12e28842327cba.webp)
三、重新推送代码
直接推送代码,完成。
![](https://file.jishuzhan.net/article/1709775981197135873/21354f48201d72312da7a9df32cc6737.webp)
![](https://file.jishuzhan.net/article/1709775981197135873/0dc670b6e1e3f9c17ab88ebd2eba3299.webp)