5

我正在使用GitHub API Gem并尝试获取有关贡献者添加、删除和提交计数的统计信息。问题是我只得到 100 个结果并且无法访问其他页面。这似乎是一个很常见的问题,但我找不到答案。

例如,让我们看一下 rails/rails repo。有 1 990 位贡献者:

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

我得到的是前 100 个结果。

我试图查询链接头中包含的分页信息。我在 Rails 控制台中的输出:

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选项对我来说没有任何改变。

我错过了什么?

4

3 回答 3

11

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

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

一无所获。因此,我向 GitHub 支持发送了一封电子邮件。这是来自永利荷兰的答案:

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

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

于 2013-08-12T15:01:18.297 回答
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。

于 2013-08-10T02:36:12.210 回答
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

于 2015-11-04T07:44:24.543 回答