如何通过GitHub API获取特定Release Tag关联的Pull Request列表?
当然可以获取到特定Release Tag关联的Pull Request列表!我之前也踩过这个坑,GitHub的REST API确实没把这个关联直接放在Commit接口的返回里,但有两个实用的方法能搞定:
方法1:用GitHub GraphQL API(更高效)
GraphQL的优势就是能一次性关联多个资源,不用多次调用接口。比如你要查询目标仓库某个Tag对应的PR,就可以用这样的查询:
query { repository(owner: "你的仓库所有者", name: "你的仓库名称") { tag(name: "你要查询的Tag名称") { target { ... on Commit { associatedPullRequests(first: 100) { nodes { number title } } } } } } }
你只需要替换掉owner、name和tag(name)里的对应值,还可以调整first参数控制返回数量,要是只需要PR编号,保留number字段就行。
方法2:REST API组合调用
如果更习惯用REST接口,可以分两步操作:
- 第一步:获取Tag对应的Commit哈希。调用
GET /repos/{owner}/{repo}/git/refs/tags/{tag_name},返回结果里的object.sha就是这个Tag指向的Commit SHA值。 - 第二步:查询该Commit关联的PR。调用
GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls,这个接口会返回所有包含该Commit的PR。一般来说,Release Tag对应的Commit都是合并后的最终提交,所以返回的PR就是和这个Tag关联的那些。
为啥直接查Commit看不到PR?
你之前用Commit API没找到PR信息,是因为REST的GET /repos/{owner}/{repo}/commits/{commit_sha}接口默认不会返回PR关联数据,必须调用专门的/pulls子接口,或者用GraphQL一次性拉取关联信息才行。
内容的提问来源于stack exchange,提问作者Kenny Lindahl
相关产品推荐
相关产品推荐

