如何通过github API获取repo的所有pull请求列表?

Res*_*lls 19 github-api pull-request

我想通过github API获取repo上所有pull请求的列表.我已按照http://developer.github.com/v3/pulls/上的说明进行操作,但当我查询'/ repos /:owner /:repo/pulls'时,它始终返回的拉取请求少于网站上显示的拉取请求.

例如,当我查询torvalds/linux repo时,我得到9个开放拉请求(网站上有14个).如果我添加'?state = closed',我会得到一组不同的11个关闭拉取请求(网站显示大约20个).

有没有人知道这种差异出现的地方,以及是否有办法通过API获得回购请求的完整列表?

aks*_*pal 11

您可以通过变量获取所有拉取请求(关闭,打开,合并)state.

只需state=all在GET查询中设置,就像这样 - >

https://api.github.com/repos/:owner/:repo/pulls?state=all
Run Code Online (Sandbox Code Playgroud)

有关更多信息:请参阅https://developer.github.com/v3/pulls/#list-pull-requests上的参数表

编辑:根据TomášVotruba的评论:

"per_page = 30"的默认值.最大值为per_page = 100.要获得超过100个结果,您需要将其称为多个itmes:"&page = 1","&page = 2"...

  • 重要:默认值为“ per_page = 30”。最大值为per_page = 100。要获得100多个结果,您需要将其称为多个Itmes:“&page = 1”,“&page = 2” ... (2认同)

Xav*_*hot 11

使用Github新的官方CLI(命令行界面):

gh pr list --repo OWNER/REPO
Run Code Online (Sandbox Code Playgroud)

这会产生类似的结果:

Showing 2 of 2 pull requests in OWNER/REPO

#62  Doing something    that-weird-branch-name
#58  My PR title        wasnt-inspired-branch
Run Code Online (Sandbox Code Playgroud)

请参阅其他详细信息和选项以及安装说明


Dai*_*ATO 7

PyGithub(https://github.com/PyGithub/PyGithub)是一个访问GitHub API v3的Python库,可以让您获得分页资源.

例如,

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
Run Code Online (Sandbox Code Playgroud)

请参阅文档(http://pygithub.readthedocs.io/en/latest/index.html).


Ian*_*sco 4

有一种方法可以获得完整的列表,而您正在这样做。您使用什么与 API 进行通信?我怀疑你可能没有做正确的事情。例如(当前只有 13 个开放拉取请求)使用我的 API 包装器 (github3.py),我可以获得所有开放拉取请求。如何在没有 python 包装器的情况下执行此操作的示例是:

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

我还可以通过自己计算结果来(模糊地)在 cURL 中得到该结果:curl https://api.github.com/repos/torvalds/linux/pulls

但是,如果您遇到的存储库包含超过 25 个(或 30 个)拉取请求,则这是一个完全不同的问题,但肯定不是您现在遇到的问题。