2013-07-02 4 views
12

github APIを使ってレポのすべてのプルリクエストのリストを取得したいと考えています。 「/ /レポ:所有者/:レポは/プル」私はhttp://developer.github.com/v3/pulls/の指示に従ってきましたが、私は、クエリを実行するとき、その一貫ウェブサイト上に表示されているよりも少ないプル要求を返します。私はTorvalds氏/ Linuxのレポを照会するとき例えばgithub APIを使用してレポのすべてのプルリクエストのリストを取得するにはどうすればよいですか?

、私は9つのオープンプル要求を取得する(ウェブサイト上で14あります)。私が '?state = closed'を追加すると、別の11個のクローズドプルリクエスト(Webサイトは約20個を表示)が得られます。

この不一致がどこで発生しているか知っていますか?また、APIを介してレポのプルリクエストの完全なリストを取得する方法がある場合は、

+0

もう一度確認できますか?テストは、期待された19、19を得ました – random

答えて

1

あり、完全なリストを取得する方法であり、あなたはそれをやっています。 APIとの通信には何を使用していますか?私は、あなたが何か正しく行っていない可能性があると思う。たとえば、私のAPIラッパー(github3.py)を使用して(現在は13個のオープンプルリクエストしかありません)、私はすべてのオープンプルリクエストを受け取ります。 pythonで私のラッパーなしでそれを行う方法の例は次のとおりです。

import requests 
r = requests.get('https://api.github.com/repos/torvalds/linux/pulls') 
len(r.json()) == 13 

と私はまた、結果自分カウントすることにより、(漠然と)のcURLでその結果を得ることができます:curl https://api.github.com/repos/torvalds/linux/pullsを。

あなたは、しかし、25以上(または30)と、リポジトリに遭遇した場合には、全く別の問題だが、最も確かに、それはあなたが今直面しているものではない要求を引き出します。

+0

レポの30以上のプル要求を取得する方法はありますか?たぶん異なるネットワーク要求ですか? – shreyj

+0

@shreyj GitHub APIの多くのエンドポイントにはページが設定されており、応答時に[リ​​ンクヘッダー](http://developer.github.com/v3/#pagination)を使用してアクセスできます。あなたがPythonやRubyを使ってリクエストをしているのであれば、私は確かにあなたにそれをもっと助けることができます。 –

3
  1. すべてのプルリクエスト(コミット、コメント、問題など)を取得する場合は、ページネーションを使用する必要があります。 https://developer.github.com/v3/#pagination

  2. GET要求「プル」はオープンプル要求のみを返します。

  3. あなたはすべてのプルリクエストすべてに、パラメータの状態を設定するか、またはあなたが問題を使用するかを取得したい場合。

追加情報

あなたは、このような問題などのGithubから他のデータを、必要がある場合は、問題から、プルリクエストを識別することができ、それならば、あなたはその後、関係なく、各プルリクエストを取得することができます閉じているか開いています。また、 問題は、プルリクエストであれば、それはその属性が含まれます(マージコミット-SHA、コミットなどのNR、合併、マージ可能)あなたに多くの属性のカップルを与えるだろう。そうでなければ、問題に過ぎない。 APIから

https://developer.github.com/v3/pulls/#labels-assignees-and-milestones

「すべてのプルリクエストが問題であるが、すべての問題は、プルリクエストではありません。このため、 『割当て先を操作するように、両方の機能のための共有』アクション、ラベル、マイルストーンは、Issues API内で提供されます。

編集私はちょうど1がすべて

+0

あなたはすべてのプルリクエストを取得するためのコードを入力してください(状態 'すべて'は含まれません) –

+0

私は尋ねるために私を許しています、私はそれが@akshaynagpalによって提供されているのを見てください –

3

変数stateですべてのプルリクエスト(クローズ、オープン、マージ)を取得できます。

ただ詳細情報についてはthis->

https://api.github.com/repos/:owner/:repo/pulls?state=all 

のように、GETクエリでstate=allを設定:https://developer.github.com/v3/pulls/#list-pull-requests

+0

取得した結果からプルリクエスト番号 –

+0

私の問題は、私がGET?state = allを指定すると、より小さい数値を返すということです?state = closed +?state = open – Akabelle

2

PyGithub(https://github.com/PyGithub/PyGithub)、でGitHubのAPIにアクセスするためのPythonライブラリをパラメータテーブルをチェックv3では、ページ単位のリソースを取得できます。例えば

g = Github(login_or_token=$YOUR_TOKEN, per_page=100) 
r = g.get_repo($REPO_NUMBER) 

for pull in r.get_pulls('all'): 
    # You can access pulls 

は、ドキュメント(http://pygithub.readthedocs.io/en/latest/index.html)を参照してください。

関連する問題