本文介绍了GitHub接口:获取特定版本标签的拉流请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以获取与版本标签相关的拉请求列表(或仅获取编号)?
我一整天都在查看Github API文档,尝试了不同的方法,但我看不出如何才能做到这一点。
当我通过API获得提交时,我看不到拉取请求信息可用,即使拉取请求id链接在此处可用,例如:https://github.com/octokit/octokit.rb/commit/1d82792d7d16457206418850a3ed0a0230defc81(参见左上角"master"旁边的#962链接)推荐答案
您可以使用Search API:
提取上一个标记与搜索问题(拉取请求类型)之间的提交SHA
- 使用Get tags提取您的回购的标签列表
- 提取您感兴趣的特定标记(版本标记名称)(&;前一个标记(如果存在))
- 使用compare获取这两个标记之间的所有提交
- search issues类型的拉取请求,具有特定的
SHA
。在这种情况下,您可以执行查询(*),所有提交都将SHA:<commit sha>
连接到查询
(*)请注意,搜索查询被限制为256个字符,因此您必须拆分这些搜索API调用
#!/bin/bash
current_tag="v4.8.0"
name_with_owner="octokit/octokit.rb"
access_token="YOUR_ACCESS_TOKEN"
tags=$(curl -s -H "Authorization: Token $access_token"
"https://api.github.com/repos/$name_with_owner/tags")
key=$(jq -r --arg current_tag $current_tag 'to_entries | .[] | select(.value.name == $current_tag) | .key' <<< "$tags")
previous_tag=$(jq -r --arg index $((key+1)) '.[$index | tonumber].name' <<< "$tags")
echo "compare between $previous_tag & $current_tag"
commits=$(curl -s -H "Authorization: Token $access_token"
"https://api.github.com/repos/$name_with_owner/compare/$previous_tag...$current_tag" |
jq -r '.commits[].sha')
# you can have a query of maximum of 256 character so we only process 17 sha for each request
count=0
max_per_request=17
while read sha; do
if [ $count == 0 ]; then
query="repo:$name_with_owner%20type:pr"
fi
query="$query%20SHA:%20${sha:0:7}"
count=$((count+1))
if ! (($count % $max_per_request)); then
echo "https://api.github.com/search/issues?q=$query"
curl -s -H "Authorization: Token $access_token"
"https://api.github.com/search/issues?q=$query" | jq -r '.items[].html_url'
count=0
fi
done <<< "$commits"
这篇关于GitHub接口:获取特定版本标签的拉流请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!