web-dev-qa-db-ja.com

github APIを使用して、リポジトリのすべてのプルリクエストのリストを取得するにはどうすればよいですか?

Github APIを使用して、リポジトリのすべてのプルリクエストのリストを取得したい。 http://developer.github.com/v3/pulls/ の指示に従いましたが、「/ repos /:owner /:repo/pulls」をクエリすると、一貫して返されるプルリクエストが少なくなりますウェブサイトに表示されるよりも。

たとえば、torvalds/linuxリポジトリにクエリを実行すると、9つのオープンプルリクエストが表示されます(ウェブサイトには14あります)。 '?state = closed'を追加すると、11のクローズされたプルリクエストの別のセットが表示されます(ウェブサイトは約20を示しています)。

この不一致がどこで発生するか、そしてAPIを介してレポのプル要求の完全なリストを取得する方法があるかどうか誰かが知っていますか?

21
ResearchMills

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

state=all GETクエリでは、次のようになります->

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

詳細情報: https://developer.github.com/v3/pulls/#list-pull-requests のパラメーターテーブルを確認してください

編集:TomášVotrubaのコメントに従って:

「per_page = 30」のデフォルト値。最大はper_page = 100です。 100件を超える結果を得るには、「&page = 1」、「&page = 2」など、複数のitmesと呼ぶ必要があります...

12
akshaynagpal

PyGithub( https://github.com/PyGithub/PyGithub )、Python GitHub API 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 )を参照してください。

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

  2. GETリクエストの「プル」は、開いているプルリクエストのみを返します。

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

追加情報

問題など、Githubから他のデータが必要な場合は、問題からプルリクエストを識別し、それが閉じていても開いていても、各プルリクエストを取得できます。また、いくつかの属性(マージ可能、マージ済み、merge-commit-sha、コミットのnrなど)も提供します。問題がプルリクエストの場合、その属性が含まれます。そうでなければ、それは単なる問題です。

APIから:https://developer.github.com/v3/pulls/#labels-assignees-and-milestones =

「すべてのプルリクエストが問題ですが、すべての問題がプルリクエストであるとは限りません。このため、担当者、ラベル、マイルストーンの操作など、両方の機能の「共有」アクションは、Issues API内で提供されます。」

編集問題はプルリクエストと同様に動作することがわかりました。そのため、stateパラメータをallに設定してすべてを取得する必要があります

3
scas

完全なリストを取得する方法があり、それを実行しています。 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)を超えるプルリクエストでリポジトリにアクセスした場合、それはまったく別の問題ですが、現在発生している問題ではないことは間違いありません。

検索APIのヘルプ: https://help.github.com/enterprise/2.2/user/articles/searching-issues/

q = repo:org/name is:pr ...

1
sibidiba

GitHubは、値をフェッチするための前、次、最後のURLを指定する「リンク」ヘッダーを提供します。例:リンクヘッダーレスポンス、<https://api.github.com/repos/:owner/:repo/pulls?state=all&page=2>; rel="next", <https://api.github.com/repos/:owner/:repo/pulls?state=all&page=15>; rel="last"rel = "next"は、次の値のセットを提案します。

0
Neha Gupta