3

我想获得一个特别是 GitHub 代表的拉取请求和问题的数量。目前我使用的方法真的很笨拙。

使用 octokit gem 和以下代码:

# Builds data that is sent to the API
def request_params
  data = { }

  # labels example: "bug,invalid,question"
  data["labels"] = labels.present? ? labels : ""

  # filter example: "assigned" "created" "mentioned" "subscribed" "all"
  data["filter"] = filter

  # state example: "open" "closed" "all"
  data["state"] = state

  return data
end


Octokit.auto_paginate = true
github = Octokit::Client.new(access_token: oauth_token)
github.list_issues("#{user}/#{repository}", request_params).count

接收到的数据非常大,因此在内存方面非常低效。我不需要有关问题的数据,只需要有多少个问题,X 个问题(基于过滤器/状态/标签)。

我想到了一个解决方案,但无法实施。基本上:做1个请求来获取标题,在标题中应该有一个指向最后一页的链接。然后再向最后一页发出 1 个请求,并检查有多少问题。然后我们可以计算:

count = ( number of pages * (issues-per-page - 1) ) + issues-on-last-page

但是我没有发现如何从 octokit Authentificated Client 获取请求头信息。如果有没有 octokit 的简单方法,我会很乐意使用它。

注意:我想解决这个问题,因为拉取请求的数量非常多,并且上面的代码在 Heroku 上会生成 R14 错误。

谢谢你!

4

1 回答 1

4

我觉得一个简单的方法是使用 GitHub API 并通过使用 per_page 过滤器来限制您希望在页面中显示的 PR 数量。例如:要找出你可以使用的回购 OneGet/oneget 的所有 PR https://api.github.com/search/issues?q=repo:OneGet/oneget+type:pr&per_page=1。JSON 响应具有字段“total_count”,它给出了 PR 总数的计数。由于只会列出一个问题,因此反应会相对较轻。参考:搜索问题

于 2017-07-16T05:05:22.793 回答