如何使用“github_api”gem从GitHub API v3获得100多个结果?

时间:2013-08-09 14:01:20

标签: ruby-on-rails pagination rubygems github-api

我正在使用GitHub API Gem并尝试get statistics about contributors's additions, deletions, and commit counts。问题是我只获得了100个结果,无法访问其他页面。这似乎是非常常见的问题,但我无法找到答案。

例如,让我们来看看rails / rails repo。有1 990名贡献者:

  repo = Github::Repos.new user: 'rails', repo: 'rails'
  repo.stats.contributors

我得到的是前100个结果。

我尝试查询链接标题中包含的分页信息。我在rails console中的输出:

irb(main):001:0> repo = Github::Repos.new
=> #<Github::Repos:0xa6941dc *@current_options ommited* >

irb(main):002:0> res = repo.stats.contributors user: 'rails', repo: 'rails'
=> #<Github::ResponseWrapper *@body omitted* >

irb(main):003:0> res.links
=> #<Github::PageLinks:0xa2a966c @next=nil, @last=nil>

无。

传递auto_pagination选项并不能为我改变任何内容。

我错过了什么?

3 个答案:

答案 0 :(得分:9)

我尝试了很多东西,最终得到了底层的GitHub API HTTP方法。例如:

curl https://api.github.com/repos/rails/rails/stats/contributors 

一无所获。所以,我发了一封电子邮件给GitHub支持。以下是Wynn Netherland的答案:

  

感谢您与我们保持联系。该特定方法不支持   分页,所以我们有效地将贡献者数据限制为100   正如你所发现的那样。我不能保证是否/何时我们能够展示   关于那个的更多数据,因为它对我们来说是一个昂贵的终点。   请关注API开发人员文档以获取更新。

谢谢Wynn。因此,GitHub Repo Statistics API不支持分页。没有办法获得超过100个结果的贡献者列表。

答案 1 :(得分:1)

我不确定传递auto_pagination选项是什么意思,因为这似乎是在创建新的GitHub实例时配置的内容,例如,

github = GitHub.new do |config|
  config.auto_pagination = true
end
github.repos.contributors 'rails', 'rails'

坦率地说,我建议使用官方的GitHub API gem - octokit.rb。它为您做分页工作并智能地知道何时可以将每页的项目数量增加到100个。

答案 2 :(得分:0)

面对同样的问题,我的解决方案是回到git命令行:

计数提交:

$ git log --author="X Y" --oneline --shortstat|wc -l
224

计算三角洲:

$ git log --author="X Y" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

添加行:1861,删除行:1243,总行数:618