You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:48:00