0

Assembla 提供了一种简单的方法来获取组织的所有提交,api.assembla.com/v1/activity.json 它使用参数来获取和获取允许获取选定日期的提交(来自用户参与的所有空间(repos)。

Github 有没有类似的方法?

我在 Github 上找到了这些:
/repos/:owner/:repo/commits
接受自从和直到参数来获取选定日期的提交。但是,由于我想要来自所有 repos 的提交,我必须遍历所有这些 repos 并为每个 repo 获取提交。

/users/:user/events
这显示了用户的提交。循环访问组织中的所有用户没有任何问题,但我怎样才能获得特定日期?

/orgs/:org/events
这显示了所有 repos 的所有用户的提交,但不知道如何获取特定日期?

4

2 回答 2

0

使用/users/:user/events端点的问题是您无法获得PushEvents 并且您将不得不跳过非提交事件并执行更多对 API 的调用。假设您已通过身份验证,只要您的用户没有过度活跃,您就应该是安全的。

因为/orgs/:org/events我认为他们不接受任何参数,但我可以咨询 API 设计人员。

万一你不熟悉,这些都是分页的结果。因此,您可以使用 Link 标头返回到开头。我的库 ( github3.py ) 提供了迭代器来自动为您执行此操作。你也可以告诉它你想要多少事件。(与提交等相同)。但是,是的,在与 GitHub 的 API 人员交谈后,我会回来编辑。

编辑对话

于 2013-01-09T15:56:22.177 回答
0

您可能想查看 GitHub 存档项目 - http://www.githubarchive.org/,以及使用 Google 的 BigQuery 查询存档的能力。听起来这将是完成这项工作的完美工具——我很确定你可以通过一个查询得到你想要的东西。

另一种选择是调用 GitHub API - 遍历组织的所有事件并过滤掉不满足您的日期范围标准和事件类型标准(提交)的事件。但由于您无法在 API 调用中指定日期范围,您可能会进行大量调用来获取您感兴趣的事件。请注意,您不必遍历从 0 开始的每个页面以找到包含日期范围内第一个结果的页面 - 只需对页码进行(变体)二进制搜索即可找到包含提交的任何页面在日期范围内,然后在两个方向上进行迭代,直到超出日期范围。这应该会减少您进行的 API 调用次数。

于 2013-01-09T18:17:14.797 回答