如何测量从 Git 存储库推送之前的提交数?
How do I measure the number of commits before a push from a Git repository?
我正在开发一个工具来收集 Git 存储库的指标。我试图弄清楚如何计算推送中的提交次数,这样我就可以说 "for repository x, an average of y commits are made before a push"。在这种情况下,可以忽略合并提交。我尝试使用 libgit2 进行此操作但没有成功,因为我不相信 Git 本身会将此信息存储在其对象数据库中。
尽管看起来 GitHub 可以推断出何时进行了推送,所以这一定是可能的。 GitHub 在主页上显示提交者的最近提交列表(对于您所属的组织和您关注的人),并在将提交推到一起时显示为压缩在一起。
如何使用 GitHub API 或其他一些库获取此信息?
为了确定给定推送中的提交数量,您需要获取存储库的 PushEvents 流。
您需要轮询 repository events 端点并过滤 PushEvents
的响应。 PushEvent
的有效负载中有一个 size
属性。那应该告诉您在该事件中推送了多少次提交。如果它已被删除(没有被记录为已删除),那么您应该能够确定 commits
属性的长度,因为它是代表每个提交的对象集合。例如,如果您在 JavaScript 中执行此操作,则可以在 Python 中执行 payload.commits.length
或 len(payload['commits'])
。
针对特定库的建议超出了 Whosebug 问题的范围,因此我不会为您回答。
我正在开发一个工具来收集 Git 存储库的指标。我试图弄清楚如何计算推送中的提交次数,这样我就可以说 "for repository x, an average of y commits are made before a push"。在这种情况下,可以忽略合并提交。我尝试使用 libgit2 进行此操作但没有成功,因为我不相信 Git 本身会将此信息存储在其对象数据库中。
尽管看起来 GitHub 可以推断出何时进行了推送,所以这一定是可能的。 GitHub 在主页上显示提交者的最近提交列表(对于您所属的组织和您关注的人),并在将提交推到一起时显示为压缩在一起。
如何使用 GitHub API 或其他一些库获取此信息?
为了确定给定推送中的提交数量,您需要获取存储库的 PushEvents 流。
您需要轮询 repository events 端点并过滤 PushEvents
的响应。 PushEvent
的有效负载中有一个 size
属性。那应该告诉您在该事件中推送了多少次提交。如果它已被删除(没有被记录为已删除),那么您应该能够确定 commits
属性的长度,因为它是代表每个提交的对象集合。例如,如果您在 JavaScript 中执行此操作,则可以在 Python 中执行 payload.commits.length
或 len(payload['commits'])
。
针对特定库的建议超出了 Whosebug 问题的范围,因此我不会为您回答。