我使用git作为我的版本控制系统,并设置了一个Gerrit站点来进行代码审查。我想创建一个钩子来执行以下操作:
找到以下文本(ID可能会更改的位置)
#version Change-Id: Ie1411d50f6beb885bc3d3b7d8c587635e1446c18
将Change-Id替换为新补丁的Change-Id。
因此,如果要合并的补丁包含Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82
,那么 version.txt 文件
运行脚本后应包含以下字符串:
#version Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82
我觉得使用更改合并挂钩可以实现这一点。我是对的吗?
提前致谢。
答案 0 :(得分:1)
这样的事情:
#!/bin/sh
# See link below for actual command line format
# you may need to make the argument parsing more robust
CHANGE_ID=$2
git clone ${GIT_DIR} /tmp/repo-${CHANGE_ID}
echo "#version Change-Id: ${CHANGE_ID}" > /tmp/repo-${CHANGE_ID}/version.txt
GIT_DIR=/tmp/repo-${CHANGE_ID}/
cd /tmp/repo-${CHANGE_ID}/
git add /tmp/repo-${CHANGE_ID}/version.txt
git commit -m'Auto-updated version'
git push origin master
rm -rf /tmp/repo-${CHANGE_ID}/
http://gerrit-documentation.googlecode.com/svn/Documentation/2.2.2/config-hooks.html#_change_merged
原则上,我不是这种方法的粉丝,我认为应该在出路上做得更好(例如,“install.sh”脚本,它可以使用git命令来提取修订版哈希,并从那里生成一个version.txt文件。但是这样的事情会让你朝着正确的方向前进。这是未经测试的,但它应该有效。
答案 1 :(得分:0)