gpt4 book ai didi

ruby - Github API : Get pull request for specific release tag

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:58 26 4
gpt4 key购买 nike

是否可以获得与发布标签相关的拉取请求列表(或只是数字)?


我一整天都在查看 Github API 文档并尝试了不同的方法,但我看不出如何才能完成这项工作。

当我通过 API 获得提交时,我看不到拉取请求信息可用,即使拉取请求 ID 和链接在这里可用,例如: https://github.com/octokit/octokit.rb/commit/1d82792d7d16457206418850a3ed0a0230defc81 (请参阅左上角 “master” 旁边的 #962 链接)

最佳答案

您可以提取您的标签与前一个标签之间的提交,并使用这些提交中的每一个搜索问题(拉取请求类型) SHA 使用搜索 API:

  • 使用Get tags为你的 repo 提取标签列表
  • 提取您感兴趣的特定标签(发布标签名称)和之前的标签(如果存在发布标签)
  • 使用 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"

关于ruby - Github API : Get pull request for specific release tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com