如何筛选特定目标分支的所有GitHub拉出请求?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我正在研究一个有很多分支和请求的GitHub库。

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

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

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

提问于
用户回答回答于

是的,你能做到的。

在Gizub的术语中,“to分支”是“base”,所以搜索短语是:is:open is:pr base:X

官方描述:基于分支名称的搜索

也可以选择添加is:mergedis:unmerged

用户回答回答于

使用cURL的示例

如果你有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"
      }
    }
  }
]

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

解析cURL响应

你可以编写一个Python / Ruby / PHP /无论脚本来解析html_url每个拉取请求的属性并在命令行上列出它。例如,下面是一个简单的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

其中输出以下内容:

$ 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

扫码关注云+社区