在 post 中触发一些东西-仅在添加新标签时接收
Trigger something in post-receive only when new tag is added
我想在 仅推送新标签时 在 GIT 的 post-receive
挂钩中执行一些操作 到存储库。如何实现?
谢谢
解决方案(Jan Krüger 的回答)
新标签有 $oldrev
个零。删除的标签有 $newrev
个等于零。对于两个 $ref
值都以 refs/tags/
.
开头
#!/bin/sh
#
read oldrev newrev ref
if [[ "0000000000000000000000000000000000000000" == $oldrev ]] && [[ $ref == refs\/tags\/* ]];
then
echo "New tag added"
fi
post-receive
挂钩在 stdin 上接收有关在该操作中更新的所有 refs(分支、标签...)的信息。每行具有以下格式,取自 githooks
manpage:
<old-value> SP <new-value> SP <ref-name> LF
所以这将是创建新标签的示例:
0000000000000000000000000000000000000000 0123456789abcdef0123456789abcdef01234567 refs/tags/mytag
您只需要从标准输入中读取并检查一行是否与此格式匹配。基本上第一个 "word" 是全零,第三个单词以 refs/tags/
.
开头
我想在 仅推送新标签时 在 GIT 的 post-receive
挂钩中执行一些操作 到存储库。如何实现?
谢谢
解决方案(Jan Krüger 的回答)
新标签有 $oldrev
个零。删除的标签有 $newrev
个等于零。对于两个 $ref
值都以 refs/tags/
.
#!/bin/sh
#
read oldrev newrev ref
if [[ "0000000000000000000000000000000000000000" == $oldrev ]] && [[ $ref == refs\/tags\/* ]];
then
echo "New tag added"
fi
post-receive
挂钩在 stdin 上接收有关在该操作中更新的所有 refs(分支、标签...)的信息。每行具有以下格式,取自 githooks
manpage:
<old-value> SP <new-value> SP <ref-name> LF
所以这将是创建新标签的示例:
0000000000000000000000000000000000000000 0123456789abcdef0123456789abcdef01234567 refs/tags/mytag
您只需要从标准输入中读取并检查一行是否与此格式匹配。基本上第一个 "word" 是全零,第三个单词以 refs/tags/
.