我正在开发一个包含大量分支和拉取请求的GitHub存储库。
例如,假设我有以下拉取请求:
a
到分支X
b
到分支X
c
到分支Y
d
到分支X
e
到分支Y
.有没有办法找到所有针对分支X
(即a -> X
、b -> X
、d -> X
)的拉取请求?
发布于 2015-08-30 14:43:47
是的,你能做到。
在Github的术语中,"to branch“是"base”,所以搜索短语是:is:open is:pr base:X
官方描述:Search based on branch names
您也可以选择添加is:merged
或is:unmerged
过滤器。
发布于 2014-04-21 11:53:25
自2016-01-10起,这已被添加到gh搜索栏api中,请参阅下一答案。
原始接受(现已公布的答案)未编辑。
目前不能通过Web界面使用
GitHub目前不提供通过其web接口按其目标分支过滤pull-requests的方法。相反,您当前得到的只是带有主题分支名称的整个拉请求列表:
单击pull-request将显示目标分支,但这并不能真正帮助您完成您想要做的任何过滤。
您可以改用GitHub REST API
但是,可以使用GitHub REST API过滤pull-requests:
GET /repos/:owner/:repo/pulls?base=:branch
这应该会向您显示所有打开的repo :owner/:repo
的拉取请求,这些请求通过以:branch
为基础分支的请求进行过滤。从文档中:
筛选器按基本分支名称提取。示例:
gh-pages
。
使用cURL的示例
如果您有可用的curl
,您可以从命令行在公共存储库上对其进行测试。在这里,查询的存储库是这个(https://github.com/codecombat/codecombat),我们从名为master
的base
分支(PR合并到的分支)获得所有拉请求,然后将结果存储到我们接下来将解析的pulls.json文件中。
curl https://api.github.com/repos/codecombat/codecombat/pulls?base=master > \
pulls.json
这将返回以下形式的JSON响应,该响应现在存储在文件pulls.json中。
[
{
"url": "https://api.github.com/repos/codecombat/codecombat/pulls/879",
"id": 14955421,
"html_url": "https://github.com/codecombat/codecombat/pull/879",
"head": {
"label": "DanielRodriguezRivero:patch-4",
"ref": "patch-4",
"sha": "baff84f0aeee12f23e3608558ae5341a0b5f939b",
"repo": {
"id": 16202384,
"name": "codecombat",
"full_name": "DanielRodriguezRivero/codecombat"
}
},
"base": {
"label": "codecombat:master",
"ref": "master",
"sha": "5e2f3ac7cb731a6e40e81737a5122c7fe1b746d3",
"repo": {
"id": 15193430,
"name": "codecombat",
"full_name": "codecombat/codecombat"
}
}
}
]
数组中的每个对象都是一个拉取请求(PR),由base=target
分支过滤,我们在上面的curl
命令中将其指定为master
。
JSON实际上包含的信息比这多得多;为了显示这个问题的相关部分,我删除了它的大部分内容。
解析cURL响应
您可能会编写一个Python/Ruby/PHP/任何脚本,然后解析出每个拉请求的html_url
属性,并在命令行中列出它。例如,下面是一个简单的Ruby脚本,它将解析从curl
输出中保存的JSON响应的输出:
require 'json'
json = JSON.parse(File.read('./pulls.json'))
pulls = json.map { |pull| { title: pull['title'], url: pull['html_url'] } }
pulls.each do |pull|
puts pull.values
puts
end
它输出以下内容:
$ ruby parser.rb
Update es-ES.coffee
https://github.com/codecombat/codecombat/pull/879
Fix deltas referring to last system saved
https://github.com/codecombat/codecombat/pull/874
Refactor getNameById and add naming to systems in deltas
https://github.com/codecombat/codecombat/pull/866
Traducido varios textos del fichero es-ES.coffe al espa├▒ol de Espa├▒a
https://github.com/codecombat/codecombat/pull/865
Anon name collide
https://github.com/codecombat/codecombat/pull/834
发布于 2021-02-27 08:02:07
现在GitHub CLI已经可用,下面介绍如何为给定的存储库执行此操作。
您可以按照适用于您的操作系统和首选软件包管理器的appropriate instructions安装gh
命令行界面。
我使用cli/cli
存储库来演示:
gh pr list --base trunk -R cli/cli
输出:
#3045 [hackday] mergeconflict hackday2102
#3044 Isolate test suite from environment variables env-tests
#3042 Remove functionality to add, view and edit binary files in gists g14a:bug/gist-binary-files
#3023 Issue/pr create: exit with nonzero status code when "Cancel" was chosen cancel-error-status
#3018 Add `pr create --body-file` flag castaneai:pr-create-body-file
#3010 Add `api --cache` flag api-cache
#3008 Add interactive select in gist view ganboonhong:interactive-gist-view
#2997 Feature/add files to gist g14a:feature/add-files-to-gist
#2991 Repo create tweaks repo-create-prompt-change
#2953 Add `repo list` command cristiand391:add-repo-list
#2923 [WIP] first round of actions support actions
#2728 Better completions rsteube:better-completions
#2261 pr status: show number of approvals despreston:des/approval-count
#2160 Sign Windows .exes in a post-build hook mbpreble:sign-windows-executables
#2080 store gh config in %APPDATA% on windows os RozzaysRed:appdata_configPath
https://stackoverflow.com/questions/20547198
复制相似问题