2013-12-12 6 views
19

私はGitHubリポジトリで多くのブランチとプルリクエストを処理しています。特定のターゲットブランチに対してすべてのGitHubプルリクエストをフィルタリングするにはどうすればいいですか?

私は、次のプル要求を持っていること、のは、例えば、言ってみましょう:

  • aX
  • を分岐する Y
  • dを分岐するX
  • cを分岐するX
  • bを分岐します
  • eは支店Yになります。

ブランチXの対象となるすべてのプル要求を見つける方法はあります(つまりa -> Xb -> Xd -> X)?

+0

承認された回答を更新する必要があります。 – tacaswell

答えて

24

はい、あなたがそれを行うことができます例えば、ここcurl出力から保存されたJSON応答の出力を解析する単純なRubyスクリプトです。 GitHubのの用語で

「分岐すること」「ベース」 あるので、検索語句は次のとおりです。is:open is:pr base:X

公式の説明:Search based on branch names

必要に応じてあなたにもis:mergedまたはis:unmergedフィルタを追加することができます。

+0

ようこそStackOverflowへ。答えにコマンドを追加することができれば、それはより良いものになります。 :) – Drazisil

+0

これは新しい機能です!詳細は https://help.github.com/articles/searching-issues/#search-based-on-branch-names – Markomafs

+0

残念ながら、これはXで始まるすべてのブランチに一致します。特定のブランチを検索する方法を知っている人プレフィックスではありませんか? – yoyo

10

2016-01-10現在、これはgh検索バーAPIに追加されています。次の回答をご覧ください。

オリジナルの承認済み(および今すぐ返信済み)は未編集です。 Webインターフェイス

のGitHubを通じて現在利用できない


は現在、彼らのウェブインターフェースを介して自分の目標 枝によってプル要求をフィルタリングする方法を提供していません。代わりに、あなたが現在入手すべてがちょうどトピックブランチの名前のプルリクエストの 全体リストされています。プルリクエストにクリック

GitHub Pull-Request UI

はターゲットブランチが表示されますが、それはしていません は本当にあなたがしたいフィルタリングを行うのに役立ちます。

あなたはGitHub REST APIを使って、プルリクエストをフィルタリングすることが可能である代わりに

をGitHubのRESTのAPIを使用することができ、 しかし:

GET /repos/:owner/:repo/pulls?base=:branch 

あなたのために開いているすべてのプルリクエストを示すべきレポ:owner/:repo,は、:branchをベースブランチとして対象とするリクエストによってフィルタリングされます。 ドキュメント:

フィルタはベースブランチ名でプルします。例:gh-pages

あなたが利用可能 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" 
     } 
    } 
    } 
] 

配列内の各オブジェクトはプルリクエストであり、ベース/ターゲットブランチによってフィルタリングされます。実際にJSONにはこれよりも多くの情報が含まれていますが、この部分の関連部分を表示するためにほとんどの部分を削除しました。 cURLのレスポンス

の解析

おそらく、Pythonの/ルビー/ PHP /どのようなスクリプト、各プルリクエストのhtml_url性質を解析し、コマンドラインで、それをリストするために書くことができます。

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 

+0

私は、この回答が古くなったというメモを追加しました。最初のセクション全体を削除することを躊躇しています。 – tacaswell

関連する問題