首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何过滤特定目标分支的所有GitHub拉取请求

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

Stack Overflow用户
提问于 2013-12-12 23:14:48
回答 3查看 22.1K关注 0票数 61

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

例如,假设我有以下拉取请求:

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

有没有办法找到所有针对分支X (即a -> Xb -> Xd -> X)的拉取请求?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-30 14:43:47

是的,你能做到。

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

官方描述:Search based on branch names

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

票数 87
EN

Stack Overflow用户

发布于 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:

代码语言:javascript
复制
GET /repos/:owner/:repo/pulls?base=:branch

这应该会向您显示所有打开的repo :owner/:repo的拉取请求,这些请求通过以:branch为基础分支的请求进行过滤。从文档中:

筛选器按基本分支名称提取。示例:gh-pages

使用cURL的示例

如果您有可用的curl,您可以从命令行在公共存储库上对其进行测试。在这里,查询的存储库是这个(https://github.com/codecombat/codecombat),我们从名为masterbase分支(PR合并到的分支)获得所有拉请求,然后将结果存储到我们接下来将解析的pulls.json文件中。

代码语言:javascript
复制
curl https://api.github.com/repos/codecombat/codecombat/pulls?base=master > \
pulls.json

这将返回以下形式的JSON响应,该响应现在存储在文件pulls.json中。

代码语言:javascript
复制
[
  {
    "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响应的输出:

代码语言:javascript
复制
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

它输出以下内容:

代码语言:javascript
复制
$ 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
票数 15
EN

Stack Overflow用户

发布于 2021-02-27 08:02:07

现在GitHub CLI已经可用,下面介绍如何为给定的存储库执行此操作。

您可以按照适用于您的操作系统和首选软件包管理器的appropriate instructions安装gh命令行界面。

我使用cli/cli存储库来演示:

gh pr list --base trunk -R cli/cli

输出:

代码语言:javascript
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20547198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档