首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Git后接收钩子到post标记名

创建Git后接收钩子到post标记名
EN

Stack Overflow用户
提问于 2020-06-06 19:26:26
回答 1查看 88关注 0票数 0

我有个关于临时Git配置的问题。

我需要把标签名传递到标签的帖子上,或者任何承诺。

代码语言:javascript
复制
#!/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

在我得到的结果中(请参阅https://requestbin.com/r/en4c6i2k7daz5/1cxY1mJeMlejAnF0OJ8B8iCd6sl)

代码语言:javascript
复制
{"version": "$refname"}

因此,由于某种原因,它没有发送标记名($refname的值)--脚本中有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 19:47:33

您在单引号数据,单引号存在,以关闭shell的字符串构造语法,扩展和分词和其他。由于参考名中不能包含空白或glob语法,所以我认为您可以不用引用它们的扩展,但为了安全起见,为了控制扩展,我通常会从单引号转换为双引号,以便得到这样的结果:

代码语言:javascript
复制
-d '{"version": "'"$refname"'"}'

或者,你可以做所有的双引号,避开json多余的双引号,用这种方式来支撑它们:

代码语言:javascript
复制
-d "{\"version\": \"$refname\"}"

编辑:嗯,我从git help check-ref-format得到

这些规则使基于shell脚本的工具很容易解析引用名称,在引用名称未引用时(错误地)由shell扩展路径名,还可以避免某些引用名称表达式中的歧义(参见gitrevisions(7)):

也就是说,您保证根本不必引用refname展开。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62236955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档