我正在开发一个包含大量分支和拉取请求的GitHub仓库。
比方说,我有以下拉取请求:
a
分行X
b
分行X
c
分行Y
d
分行X
e
分行Y
。有没有办法找到针对分支X
的所有拉取请求(即a -> X
,b -> X
,d -> X
)?
答案 0 :(得分:37)
是的,你可以做到。
在Github的术语中,分支"分支"是"基地"
所以搜索短语是:is:open is:pr base:X
官方说明:Search based on branch names
您也可以选择添加is:merged
或is:unmerged
过滤器。
答案 1 :(得分:11)
截至2016-01-10,这已被添加到gh搜索栏api中,请参阅下一个答案。
原始接受(现在已解决的答案)未经编辑。
GitHub目前没有提供过滤目标拉取请求的方法 通过他们的网络界面分支。相反,你现在得到的只是 带有主题分支名称的完整拉取请求列表:
单击拉取请求将显示目标分支,但事实并非如此 真的可以帮助你做任何你想要做的过滤。
可以使用GitHub REST API过滤提取请求, 但是:
GET /repos/:owner/:repo/pulls?base=:branch
那应该显示回购:owner/:repo
的所有开放拉动请求,
通过将:branch
作为基本分支的请求进行过滤。来自
文档:
按基本分支名称过滤。示例:
gh-pages
。
如果您有curl
可用,则可以在公共仓库中对此进行测试
命令行:
curl https://api.github.com/repos/codecombat/codecombat/pulls?base=master > \
pulls.json
这将返回以下形式的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"
}
}
}
]
数组中的每个对象都是一个pull-request,由base / target分支过滤。 JSON实际上包含更多内容 信息比这个,我刚刚删除了大部分信息来显示相关部分 对于这个问题。
您可以编写Python / Ruby / PHP / Whatever脚本,然后解析每个pull-request的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
答案 2 :(得分:1)
head
) branch”、“to (base
) branch”和作者搜索 PR,包括使用自定义来执行此操作您可以在搜索栏中快速触发的 Chrome 搜索引擎:注意:以下在 GitHub 上搜索 PR(拉请求)的目的是在此处的 PR 搜索栏中完成(https://github.com --> 顶部的“拉请求”)(直接链接: https://github.com/pulls),不会出现在几乎所有 GitHub 页面左上角的通用 GitHub 搜索栏中,尽管它们也可能在那里工作。
另见我的回答:Can I search github labels with logical operator OR?
在 GitHub 行话中,您要合并的分支是 head
分支,您要合并的分支是 base
分支。请参阅此处:https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-branch-name。我不确定他们为什么不选择 from_branch
和 to_branch
,因为那样会更容易记住。
my_branch
查找来自 head:my_branch
的所有 PR:is:open is:pr archived:false head:my_branch
也可以指定一个存储库:
is:open is:pr archived:false repo:some_username/some_repository head:my_branch
my_branch
和 base:my_branch
的 PR:is:open is:pr archived:false base:my_branch
也可以指定一个存储库:
is:open is:pr archived:false repo:some_username/some_repository base:my_branch
来自官方 GitHub 文档:https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-branch-name:
<块引用>按分行名称搜索
您可以根据请求来自的分支(“head”分支)或合并到的分支(“base”分支)过滤拉取请求。
Qualifier Example
--------------------- -------------------------------------------------
`head:HEAD_BRANCH` `head:change is:closed is:unmerged` matches pull
requests opened from branch names beginning with
the word "change" that are closed.
`base:BASE_BRANCH` `base:gh-pages` matches pull requests that are
being merged into the gh-pages branch.
对于那些不知道的人,Chrome 浏览器允许您创建自定义搜索引擎。如果我转到浏览器搜索栏并输入 gto
后跟 Space 或 Tab,然后输入我的分支名称 my_branch
,我会看到这。我实际上是在使用由我设置的 my_branch
快捷方式触发的自定义搜索引擎搜索合并到分支 gto
的所有开放 PR:
以下是配置这些的方法:
在 Chrome 中,单击右上角的 3 个点 --> 设置 --> 搜索引擎(在左窗格中)-->“管理搜索引擎”--> 在“其他搜索引擎”下,单击“添加“ 按钮。像这样设置:
完成后点击“保存”。以下是我最喜欢的 3 个:
GitHub PRs merging TO branch
gto
%s
代替查询的网址:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+base%3A%s
GitHub PRs merging FROM branch
gfrom
%s
代替查询的网址:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+head%3A%s
GitHub PRs BY this User
gby
%s
代替查询的网址:https://github.com/pulls?q=is%3Aopen+is%3Apr+author%3A%s+archived%3Afalse+
确定要为 URL 搜索字符串添加什么内容的方法实际上非常简单:您只需转到 GitHub 并使用 GitHub 的工具手动进行搜索,然后复制并粘贴 URL,替换您想要的搜索字符串喜欢在自定义 Chrome 搜索引擎 URL 中使用 %s
进行搜索。而已!此过程适用于在您在其网站上进行自定义搜索后将其搜索变量存储到 URL 中的任何和所有网站,这些网站是许多(如果不是大多数)具有搜索功能的网站。
答案 3 :(得分:0)
既然 GitHub CLI 可用,下面是您对给定存储库执行此操作的方法。
您可以按照 appropriate instructions 为您的操作系统和首选软件包管理器安装 gh
CLI。
我使用 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