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

我正在使用GitHub API Gem并尝试获取有关贡献者的添加,删除和提交计数的统计信息 。 问题是我只得到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 => # irb(main):002:0> res = repo.stats.contributors user: 'rails', repo: 'rails' => # irb(main):003:0> res.links => # 

没有。

传递auto_pagination选项不会改变我的任何内容。

我错过了什么?

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

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

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

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

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

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

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

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

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

计数提交:

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

计数三角洲:

 $ git log --author="XY" --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