【问题标题】:github api - fetch all commits of all repos of an organisation based on dategithub api - 根据日期获取组织的所有 repos 的所有提交
【发布时间】:2012-12-23 13:45:59
【问题描述】:

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

Github 有没有类似的方法?

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

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

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

【问题讨论】:

    标签: python ruby github github-api


    【解决方案1】:

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

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

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

    编辑Conversation

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-07-21
        • 1970-01-01
        • 2022-08-19
        • 1970-01-01
        • 2020-12-31
        • 1970-01-01
        • 2018-02-28
        • 2015-01-31
        • 1970-01-01
        相关资源
        最近更新 更多