2.8 KiB
2.8 KiB
安装 Gerrit Commit Hook 指南
问题
错误信息:
ERROR: commit b4917f2: missing Change-Id in message footer
Gerrit 要求每个提交都必须包含 Change-Id。
解决方案:安装 commit-msg hook
步骤 1:安装 commit-msg hook
在您的本地电脑上执行:
cd /d/ttt/test-project
# 安装 commit-msg hook
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 renjianbo@101.43.95.130:hooks/commit-msg ${gitdir}/hooks/
注意:如果 scp 命令失败,可能需要使用完整路径或配置 SSH。
步骤 2:修改最后一次提交(添加 Change-Id)
# 修改最后一次提交,自动添加 Change-Id
git commit --amend --no-edit
步骤 3:重新推送
# 如果创建了 SSH 配置文件
git push origin HEAD:refs/for/master
# 如果还没创建配置文件
GIT_SSH_COMMAND="ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa" git push origin HEAD:refs/for/master
如果 scp 命令失败
方法一:使用 curl 下载(推荐)
cd /d/ttt/test-project
# 创建 hooks 目录(如果不存在)
mkdir -p .git/hooks
# 下载 commit-msg hook
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
# 设置执行权限
chmod +x .git/hooks/commit-msg
方法二:手动创建 hook 文件
如果以上方法都不行,可以手动创建:
cd /d/ttt/test-project
# 创建 hooks 目录
mkdir -p .git/hooks
# 创建 commit-msg hook(简化版)
cat > .git/hooks/commit-msg << 'EOF'
#!/bin/sh
# Gerrit commit-msg hook
CHANGE_ID=$(git log -1 --format='%H' | cut -c1-8)
echo "" >> "$1"
echo "Change-Id: I${CHANGE_ID}0000000000000000000000000000000000000000" >> "$1"
EOF
# 设置执行权限
chmod +x .git/hooks/commit-msg
完整操作流程
cd /d/ttt/test-project
# 方法 1:使用 scp(如果 SSH 配置正确)
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 renjianbo@101.43.95.130:hooks/commit-msg ${gitdir}/hooks/
# 方法 2:使用 curl(推荐,更简单)
mkdir -p .git/hooks
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
# 修改最后一次提交
git commit --amend --no-edit
# 推送代码
git push origin HEAD:refs/for/master
验证 hook 是否安装成功
# 查看 hook 文件是否存在
ls -la .git/hooks/commit-msg
# 应该显示文件存在且有执行权限
以后的使用
安装 hook 后,以后的所有提交都会自动包含 Change-Id,不需要手动添加。
推送成功后的效果
推送成功后,Gerrit 会返回变更 URL,例如:
remote: http://101.43.95.130:8080/c/test-project/+/1 [NEW]
在浏览器中打开即可查看和评审代码变更。