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

126 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 安装 Gerrit Commit Hook 指南
## 问题
错误信息:
```
ERROR: commit b4917f2: missing Change-Id in message footer
```
Gerrit 要求每个提交都必须包含 Change-Id。
## 解决方案:安装 commit-msg hook
### 步骤 1安装 commit-msg hook
在您的本地电脑上执行:
```bash
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
```bash
# 修改最后一次提交,自动添加 Change-Id
git commit --amend --no-edit
```
### 步骤 3重新推送
```bash
# 如果创建了 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 下载(推荐)
```bash
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 文件
如果以上方法都不行,可以手动创建:
```bash
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
```
## 完整操作流程
```bash
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 是否安装成功
```bash
# 查看 hook 文件是否存在
ls -la .git/hooks/commit-msg
# 应该显示文件存在且有执行权限
```
## 以后的使用
安装 hook 后,以后的所有提交都会自动包含 Change-Id不需要手动添加。
## 推送成功后的效果
推送成功后Gerrit 会返回变更 URL例如
```
remote: http://101.43.95.130:8080/c/test-project/+/1 [NEW]
```
在浏览器中打开即可查看和评审代码变更。