我正在使用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
选项并不能为我改变任何内容。
我错过了什么?
答案 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