多数のブランチとプルリクエストがあるGitHubリポジトリに取り組んでいます。
たとえば、次のプルリクエストがあるとします。
a
ブランチへX
b
ブランチへX
c
ブランチへY
d
ブランチへX
e
からブランチY
へ。ブランチX
を対象とするすべてのプルリクエストを見つける方法はありますか(つまりa -> X
、b -> X
、d -> X
)?
はい、できます。
Githubの用語では、「分岐する」は「ベース」なので、検索フレーズは次のとおりです:is:open is:pr base:X
公式説明: ブランチ名に基づいて検索
オプションで、is:merged
またはis:unmerged
フィルターも追加できます。
2016-01-10現在、これはgh検索バーAPIに追加されています。次の回答を参照してください。
元の承認済み(現在は期限切れの回答)は編集せずに残しました。
GitHubは現在、Webインターフェースを介してターゲットブランチによってプルリクエストをフィルタリングする方法を提供していません。代わりに、現在取得しているのは、トピックブランチの名前を含むプルリクエストのリスト全体です。
プルリクエストをクリックするとターゲットブランチが表示されますが、これは実際に必要なフィルタリングを行うのに役立ちません。
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"
}
}
}
]
配列内の各オブジェクトは、ベース/ターゲットブランチによってフィルタリングされたプルリクエストです。 JSONには実際にはこれよりもはるかに多くの情報が含まれています。この質問に関連する部分を示すために、JSONのほとんどを削除しました。
おそらくPython/Ruby/PHP/Whateverスクリプトを作成して、各プルリクエストの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