我使用 git 作为我的版本控制系统,并建立了一个 Gerrit 站点来进行代码审查。我想创建一个钩子来执行以下操作:
- 当管理员单击“提交”按钮时,会生成一个文件(称为版本.txt)
应该修改。
- 脚本应该打开该文件。
-
找到以下文本(其中ID可能会更改)
#version Change-Id: Ie1411d50f6beb885bc3d3b7d8c587635e1446c18
将 Change-Id 替换为新补丁的 Change-Id。
-
因此,如果正在合并的补丁具有Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82
那么版本.txt文件
脚本运行后应包含以下字符串:
#version Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82
- 然后钩子应该创建一个新的提交(因为现在其中一个文件发生了更改)并将最后一次提交推送到 master。
我觉得这可以使用变更合并钩。我对吗?
提前致谢。
像这样的东西:
#!/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 http://gerrit-documentation.googlecode.com/svn/Documentation/2.2.2/config-hooks.html#_change_merged
原则上,我不喜欢这种方法,我认为最好在退出时完成(例如,“install.sh”脚本,它可以使用 git 命令提取修订哈希,并生成version.txt 文件从那里)。但这样的事情应该会让你走上正确的方向。这未经测试,但应该有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)