Files
gerrit/安装CommitHook指南.md
2025-12-22 17:12:39 +08:00

2.8 KiB
Raw Blame History

安装 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]

在浏览器中打开即可查看和评审代码变更。