创建Git post接收钩子以发布标记名

创建Git post接收钩子以发布标记名,git,hook,git-post-receive,Git,Hook,Git Post Receive,我有一个关于即席Git配置的问题 我需要在标签上传递标签名或任何提交,例如 #!/bin/bash while read oldrev newrev refname do branch=$(git rev-parse --symbolic --abbrev-ref $refname) curl -X POST "https://en4c6i2k7daz5.x.pipedream.net/" \ -H 'Content-Type: application/json'

我有一个关于即席Git配置的问题

我需要在标签上传递标签名或任何提交,例如

#!/bin/bash
while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    curl -X POST "https://en4c6i2k7daz5.x.pipedream.net/" \
        -H 'Content-Type: application/json' \
        -d '{"version": "$refname"}'            
done
结果我得到了(见)


因此,出于某种原因,它没有发送标记名(脚本中有什么错误?

您在单引号中引用数据,单引号用于关闭shell的字符串构造语法、扩展和分词等。由于refnames中不能包含空格或glob语法,我认为您可以不引用它们的扩展名,但为了安全起见,我通常会这样做,为了控制扩展名,我通常会根据需要从单引号切换到双引号,以获得:

-d '{"version": "'"$refname"'"}'
或者,您可以全部使用双引号,并避开json的多余引号,以这种方式将它们固定住:

-d "{\"version\": \"$refname\"}"
编辑:hmmm,来自
git帮助检查ref格式

这些规则使得基于shell脚本的工具可以轻松地解析引用名、路径名和 当引用名未加引号(错误地)使用时使用shell,并避免在某些引用中出现歧义 名称表达式(见第(7)款):


i、 e.您保证不必引用refname扩展。

谢谢,您救了我一天!这是一个非常愚蠢的问题:)
-d "{\"version\": \"$refname\"}"