You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取GitHub仓库的历史月度贡献者总数及指定仓库的月度Used by与贡献者统计数据?

获取GitHub仓库月度历史统计数据的可行方案

针对你的两个问题,我整理了几个实用的方法,能避开Wayback Machine的局限性:

一、获取过去x个月/年内每月的总贡献者历史统计

GitHub没有直接提供月度贡献者历史的API端点,但我们可以通过分析提交记录来推导,具体步骤如下:

  • 核心思路:抓取仓库的所有提交记录,按月份分组,提取每个月内有提交行为的唯一用户ID,统计去重后的数量就是当月的贡献者总数。
  • 实现方式
    1. 使用GitHub官方CLI工具gh或者直接调用REST API获取提交列表。比如用gh api repos/pytorch/pytorch/commits --per-page 100批量拉取提交(注意处理分页逻辑)。
    2. 编写脚本(比如Python、JavaScript)遍历所有提交,提取每个提交的author.login字段,按「年份+月份」进行分组。
    3. 对每个月份的用户列表去重,得到当月的贡献者数量。
    4. 如果只需要最近x个月的数据,可以在API请求中添加sinceuntil参数过滤时间范围,减少数据处理量。

示例Python代码片段(使用PyGitHub库):

from github import Github
from collections import defaultdict
from datetime import datetime

# 替换为你的GitHub访问令牌
g = Github("your_access_token")
repo = g.get_repo("pytorch/pytorch")
# 筛选2023年全年的提交
commits = repo.get_commits(since=datetime(2023, 1, 1), until=datetime(2024, 1, 1))

monthly_contributors = defaultdict(set)
for commit in commits:
    if commit.author:
        month_key = commit.commit.author.date.strftime("%Y-%m")
        monthly_contributors[month_key].add(commit.author.login)

# 输出每月贡献者统计
for month, users in monthly_contributors.items():
    print(f"{month}: {len(users)} 位贡献者")

二、获取Used by和贡献者数量的月度历史数据

仓库右侧的Used by对应的是依赖该仓库的公开仓库数量,贡献者数量是所有提交过代码的用户总数。由于GitHub不提供这些指标的历史快照,你可以通过以下机制积累数据:

1. 定期抓取并本地存储

这是最可靠的方案,具体操作:

  • 使用GitHub GraphQL API查询当前的指标值:
    • 贡献者总数:查询repository.contributors.totalCount
    • Used by数量:查询repository.repositoriesDependentsCount
  • 编写定时任务(比如用Linux cron、GitHub Actions),每月执行一次查询,将结果存储到数据库(比如SQLite、PostgreSQL)或者CSV文件中。
  • 积累几个月后,你就有了完整的月度历史数据。

示例GraphQL查询语句:

query {
  repository(owner: "pytorch", name: "pytorch") {
    contributors(first: 1) {
      totalCount
    }
    repositoriesDependentsCount
  }
}

2. 分析GitHub Archive事件数据

GitHub Archive会记录GitHub上的所有公开事件(比如push、仓库创建、依赖添加等)。你可以下载对应时间段的归档数据,通过分析:

  • Push事件来统计每月的贡献者(和第一个问题的思路类似)
  • 依赖相关的事件(比如createdupdated依赖)来估算Used by数量的变化
    不过这种方法需要处理大量原始数据,适合有数据处理经验的开发者。

3. 借助专业的仓库分析工具

有些专注于GitHub生态的分析工具会长期跟踪仓库的关键指标(包括贡献者、依赖数量),并提供历史数据查询功能。你可以寻找这类工具来获取现成的历史统计,无需自己维护抓取任务。

内容的提问来源于stack exchange,提问作者Christopher

火山引擎 最新活动