如何过滤特定目标分支的所有GitHub拉取请求

AVI*_*per 30 git github pull-request

我正在开发一个包含大量分支和拉取请求的GitHub仓库.

比方说,我有以下拉取请求:

  • a 分支 X
  • b 分支 X
  • c 分支 Y
  • d 分支 X
  • e分支Y.

有没有办法找到有针对性的分支的所有引入请求X(即a -> X,b -> X,d -> X)?

And*_*vid 43

是的,你可以做到.

在Github的术语中,"to branch"是"base"所以搜索短语是: is:open is:pr base:X

官方说明:根据分支机构名称进行搜索

您也可以选择添加is:mergedis:unmerged过滤.

  • 要指定“head”分支,意思是:PR 来自的分支,而不是合并到的分支,请使用“head:my_branch”而不是“base:my_branch”。请参阅:https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-branch-name。 (2认同)

Gab*_*les 17

head如何按“来自 ( ) 分支”、“至 ( base) 分支”和作者搜索 PR ,包括使用可在搜索栏中快速触发的自定义 Chrome 搜索引擎执行此操作:

\n

注意:以下在 GitHub 上搜索 PR(拉取请求)的目的是在此处的 PR 搜索栏中完成(https://github.com --> 顶部的“拉取请求”)(直接链接:https:// github.com/pulls),而不是在几乎所有 GitHub 页面左上角的通用 GitHub 搜索栏中,尽管它们也可能在那里工作。

\n

另请参阅我的回答:我可以使用逻辑运算符 OR 搜索 github 标签吗?

\n

用 GitHub 术语来说,您要合并的分支是分支head,您要合并的分支是分支base。请参阅此处:https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-branch-name。我不确定他们为什么不选择from_branchto_branch因为那样会更容易记住。

\n

1.my_branch使用搜索字符串查找所有 PR FROM head:my_branch

\n
is:open is:pr archived:false head:my_branch\n
Run Code Online (Sandbox Code Playgroud)\n

(可选)也指定一个存储库:

\n
is:open is:pr archived:false repo:some_username/some_repository head:my_branch\n
Run Code Online (Sandbox Code Playgroud)\n

my_branch2.使用搜索字符串查找合并到 TO 中的所有 PR base:my_branch

\n
is:open is:pr archived:false base:my_branch\n
Run Code Online (Sandbox Code Playgroud)\n

(可选)也指定一个存储库:

\n
is:open is:pr archived:false repo:some_username/some_repository base:my_branch\n
Run Code Online (Sandbox Code Playgroud)\n

3. 参考文献:

\n
    \n
  1. 来自官方 GitHub 文档:https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-branch-name

    \n
    \n

    按分行名称搜索

    \n

    您可以根据拉取请求来自的分支(“头”分支)或它们要合并到的分支(“基础”分支)来过滤拉取请求。

    \n
    Qualifier               Example  \n---------------------   -------------------------------------------------\n`head:HEAD_BRANCH`      `head:change is:closed is:unmerged` matches pull \n                        requests opened from branch names beginning with \n                        the word "change" that are closed.\n\n`base:BASE_BRANCH`      `base:gh-pages` matches pull requests that are \n                        being merged into the gh-pages branch.\n
    Run Code Online (Sandbox Code Playgroud)\n
    \n
  2. \n
  3. @Andor D\xc3\xa1vid\ 的回答在这里

    \n
  4. \n
\n

4. 更进一步:为 GitHub 搜索添加自定义 Google Chrome 搜索引擎

\n

对于那些不知道的人来说,Chrome 浏览器允许您创建自定义搜索引擎。如果我转到浏览器搜索栏并输入gtoSpaceTab然后输入我的分支名称 ,my_branch我会看到这一点。我实际上正在搜索所有合并到分支的开放 PR my_branch,使用由我gto设置的快捷方式触发的自定义搜索引擎:

\n

在此输入图像描述

\n

以下是如何配置它们:

\n

在 Chrome 中,单击右上角的 3 个点 --> 设置 --> 搜索引擎(在左侧窗格中)-->“管理搜索引擎”--> 在“其他搜索引擎”下,单击“添加”按钮。像这样设置:\n在此输入图像描述

\n

完成后单击“保存”。以下是我最喜欢的 3 个:

\n
    \n
  1. 搜索合并到给定分支的 GitHub PR:\n
      \n
    1. 搜索引擎:GitHub PRs merging TO branch
    2. \n
    3. 关键词:gto
    4. \n
    5. URL 代替%s查询:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+base%3A%s
    6. \n
    \n
  2. \n
  3. 搜索从给定分支合并的 GitHub PR:\n
      \n
    1. 搜索引擎:GitHub PRs merging FROM branch
    2. \n
    3. 关键词:gfrom
    4. \n
    5. URL 代替%s查询:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+head%3A%s
    6. \n
    \n
  4. \n
  5. 搜索某个作者的 GitHub PR:\n
      \n
    1. 搜索引擎:GitHub PRs BY this User
    2. \n
    3. 关键词:gby
    4. \n
    5. URL 代替%s查询:https://github.com/pulls?q=is%3Aopen+is%3Apr+author%3A%s+archived%3Afalse+
    6. \n
    \n
  6. \n
\n

计算出为 URL 搜索字符串添加内容的方法实际上非常简单:您只需转到 GitHub 并使用 GitHub 的工具手动执行搜索,然后复制并粘贴 URL,替换您的搜索字符串我想要%s在自定义 Chrome 搜索引擎网址中进行搜索。就是这样!一旦您在其网站上进行自定义搜索,此过程适用于将搜索变量存储到 URL 中的所有网站,这是许多(如果不是大多数)具有搜索功能的网站。

\n

关键词:Google chrome / GitHub PR 浏览器自定义搜索引擎

\n


小智 11

截至2016-01-10,这已被添加到gh搜索栏api中,请参阅下一个答案.

原始接受(现在已解决的答案)未经编辑.


目前不能通过Web界面使用

GitHub目前没有提供通过其Web界面过滤目标分支的拉取请求的方法.相反,您当前获得的只是具有主题分支名称的整个pull-requests列表:

GitHub Pull-Request UI

单击一个pull-request将显示目标分支,但这并不能帮助您执行任何您想要执行的过滤.

您可以使用GitHub REST API

但是,可以使用GitHub REST API过滤pull-requests :

GET /repos/:owner/:repo/pulls?base=:branch
Run Code Online (Sandbox Code Playgroud)

这应该显示repo的所有打开请求:owner/:repo,由:branch作为其基本分支的请求过滤.从文档:

过滤器按基本分支名称拉取.示例:gh-pages.

示例使用cURL

如果curl可用,可以从命令行在公共存储上测试:

curl https://api.github.com/repos/codecombat/codecombat/pulls?base=master > \
pulls.json
Run Code Online (Sandbox Code Playgroud)

这将返回以下形式的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"
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

数组中的每个对象都是一个pull-request,由base/target分支过滤.JSON实际上包含了比这更多的信息,我刚删除了大部分信息以显示此问题的相关部分.

解析cURL响应

您可以编写一个Python/Ruby/PHP/Whatever脚本,然后解析html_url每个pull-request 的属性并在命令行中列出它.例如,这是一个简单的Ruby脚本,它将解析从输出中保存的JSON响应的curl输出:

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
Run Code Online (Sandbox Code Playgroud)

其中输出如下:

$ 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
Run Code Online (Sandbox Code Playgroud)