github api - 根据日期获取组织的所有回购的所有提交

时间:2013-01-09 13:36:12

标签: python ruby github github-api

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

Github有没有类似的方式?

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

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

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

2 个答案:

答案 0 :(得分:0)

使用/users/:user/events端点的问题在于,您只是没有获得PushEvent,并且您必须跳过非提交事件并执行对API的更多调用。假设您已通过身份验证,只要您的用户不是超级活动,您就应该是安全的。

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

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

修改Conversation

答案 1 :(得分:0)

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

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