繁体   English   中英

通过 go-github 使用搜索 API 进行合并请求

[英]Use Search API for Pull Requests with go-github

场景:我从 GitHub 收到状态 webhook 事件。我想找到与提交相关的任何拉取请求。

StatusEvent包含提交.SHA.Repo (Respository) object。这似乎足以找到适用的 PR。

问题:如果触发status事件以响应在与提交分开的存储库中对 PR 执行的检查,则会出现问题......

尝试 1 :go-github package 包含一个带有.ListPullRequestsWithCommit方法的PullRequestsService调用此 GitHub API 方法 不幸的是,这似乎只返回包含提交的 repo 中的 PR。 意思是,它似乎忽略了使用分叉回购的提交创建的 PR。

尝试 2 :go-github 有一个接受query参数的SearchService.Issues方法。 使用参数type:pr SHA:<sha> ,您会遇到“支持”PR 的问题(不确定正确的术语)——无论原始回购如何。

然后,使用PullRequestsService.Get方法,您可以获得实际的PullRequest数据。

原型代码(使用风险自负):

commitSha := event.GetCommit().GetSHA()
ownerLogin := repo.GetOwner().GetLogin()

issues, _, err := client.Search.Issues(ctx, fmt.Sprintf("type:pr SHA:%s", commitSha), &github.SearchOptions{})
// if err != nil { ??? }
// if len(issues.Issues) == 0 { ??? }
issue := issue.Issue[0]
pr, _, err := client.PullRequests.Get(ctx, ownerLogin, issue.GetNumber())
// if err != nil { ??? }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM