我可以使用以下命令从GitHub api获取最新的提交:
$ curl 'https://api.github.com/repos/dwkns/test/commits?per_page=1'
但是,生成的JSON不包含对我在提交时创建的标记的任何引用。
我可以使用以下方式获取标签列表:
$ curl 'https://api.github.com/repos/dwkns/test/tags'
然而,生成的JSON,虽然它包含我想要的标签的名称,但不是按照它们的创建顺序 - 没有办法告诉哪个标签是最新的。
编辑:创建的最新代码为LatestLatestLatest
我的问题是我需要做什么API调用来获取我的存储库中最新标记的名称?
答案 0 :(得分:0)
#!/bin/sh
curl -s https://github.com/dwkns/test/tags |
awk '/tag-name/{print $3;exit}' FS='[<>]'
或者
#!/bin/awk -f
BEGIN {
FS = "[<>]"
while ("curl -s https://github.com/dwkns/test/tags" | getline) {
if(/tag-name/){print $3;exit}
}
}
答案 1 :(得分:0)
将jq
与curl
结合使用,您可以获得非常简单的命令:
curl -s \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/dwkns/test/tags \
| jq -r '.[0].name'
输出(截至今天):
v56
jq
命令的解释:
-r
用于&#34; raw&#34;,避免在jq&#39输出上引用json .[0]
选择我们从github获得的json object
中的第一个(最新)标记array
.name
选择此最新json name
object
属性
答案 2 :(得分:0)
以下内容对我有用,但是您可能需要修改grep
,具体取决于标签的命名约定:
curl -s 'https://github.com/username/reponame/tags/'|grep -o "$Version v[0-9].[0-9][0-9]"|sort -r|head -n1
在设计升级脚本时,可用于测试Github上发布的回购的最新版本与已安装的软件版本(这就是为什么我需要此;->)
注意:reponame
是名称{strong>排除 .git
。因此,如果您要从克隆地址中剪切URL,请在构建上述URL-HTH-Terrence Houlahan
.git
位从末尾截断