我想设置一个基于传入标签创建 CDN 样式目录结构的 git 挂钩。因此,例如,如果本地存储库中的最后一个标签是“v1.2.1”并且我使用“v1.2.2”拉取提交,它应该会看到新标签并将存储库直接克隆到新标签(../1.2 .2) 相应地。
我很确定我想将它附加到 post-receive,但是我在文档中找不到任何关于如何读取传入标签的 git hooks 的内容。他们是在不同的钩子上交付的吗?我真的需要让 shell 脚本运行一个 git 命令来查看是否有任何新提交有新标签吗?
谢谢!
标签与任何其他(如提交)一样是参考。
如果标签被推送到带有post-receive 钩子的仓库,该钩子将被调用并列出所有更新的 refs,即所有 refs 的旧值和新值以及它们的名称(在其标准输入上)。
例如,请参阅此服务器post-receive 电子邮件挂钩。
#!/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
为此,您还必须从上述示例挂钩存储库中安装函数文件。