我想设置一个git钩子,根据传入的标签创建一个CDN样式的目录结构.因此,举例来说,如果在本地存储库中的最后一个标签是"V1.2.1"和我拉以"V1.2.2"提交,应该看到新的标签和克隆库到一个新的直接(../1.2 .2)相应的.
我很确定我想把这个附加到post-receive,但是我在文档中找不到关于如何读取传入标签的git hooks.它们是在不同的钩子上交付的吗?我是否真的需要让shell脚本运行git命令来查看是否有任何新提交有新标签?
谢谢!
Von*_*onC 34
标签是refs像任何其他(如提交).
如果使用post-receive挂钩将标签推送到repo,则会调用该挂钩并列出所有更新的ref,除了它们的名称(在其标准输入上)之外,它们都是所有refs的旧值和新值.
例如,请参阅此服务器post-receive email hook.
#!/bin/bash
. $(dirname $0)/functions
process_ref() {
oldrev=$(git rev-parse $1)
newrev=$(git rev-parse $2)
refname="$3"
set_change_type
set_rev_types
set_describe_tags
case "$refname","$rev_type" in
refs/tags/*,tag)
# annotated tag
refname_type="annotated tag"
function="atag"
short_refname=${refname##refs/tags/}
# change recipients
if [ -n "$announcerecipients" ]; then
recipients="$announcerecipients"
fi
;;
esac
}
while read REF; do process_ref $REF; done
Run Code Online (Sandbox Code Playgroud)
为此,您还必须安装上述示例挂钩存储库中的函数文件.