Gerrit 2.16.17服务端commit-received钩子校验提交信息配置求助
Gerrit 2.16.17 Commit Message 校验钩子配置指南
1. 自定义校验脚本
没有完全匹配你指定自定义字段的官方预置脚本,可直接使用以下适配好的bash脚本,完全覆盖你的校验需求:
#!/bin/bash # Gerrit commit-received 钩子:校验commit message必填字段 COMMIT_HASH=$1 REPO_PATH=$2 # 定义必填字段清单 REQUIRED_FIELDS=("Feature Ver:" "Bug-ID:" "Task:" "Test result:") # 提取提交信息正文 COMMIT_MSG=$(git --git-dir ${REPO_PATH} cat-file commit ${COMMIT_HASH} | sed '1,/^$/d') # 逐个校验必填字段是否存在 for field in "${REQUIRED_FIELDS[@]}" do if ! echo "${COMMIT_MSG}" | grep -q "^${field}" then echo "ERROR: 提交被驳回,Commit Message 缺失必填字段:${field}" echo "请补充以下所有必填字段后重新推送:" echo "Feature Ver: <填写版本号>" echo "Bug-ID: <填写关联缺陷ID,无则填None>" echo "Task: <填写关联任务ID>" echo "Test result: <填写测试结论>" exit 1 fi done exit 0
若需要限制字段不能为空,可将
grep -q "^${field}"修改为grep -q "^${field} .\+"即可。
2. 服务端配置生效步骤
- 登录Gerrit服务端,切换为Gerrit运行用户(通常为
gerrit),进入钩子目录:
注意将cd $GERRIT_SITE/hooks$GERRIT_SITE替换为你实际的Gerrit站点根目录,例如/opt/gerrit/site - 创建
commit-received钩子文件,将上述脚本内容完整粘贴进文件 - 给钩子添加可执行权限:
chmod +x commit-received - 确认钩子文件的所有者为Gerrit运行用户,避免权限不足无法执行:
chown gerrit:gerrit commit-received - 无需重启Gerrit服务,配置即时生效。可本地构造缺失字段的提交推送验证,确认可以正常触发驳回规则;再提交符合格式的内容,确认评审请求可以正常创建。
3. 可选调整项
如果不需要全局生效,仅需要针对特定仓库校验,可在脚本中增加仓库路径判断逻辑,示例:
# 仅对路径为repos/app/的仓库启用校验 if [[ ! ${REPO_PATH} =~ "repos/app/" ]];then exit 0 fi
内容的提问来源于stack exchange,提问作者user4948798
相关产品推荐
相关产品推荐

