数据收集方式

GH Archive

收集方式

devstats 会一次性将 GH Archive 所有的 JSON 文件逐个下载下来进行解析然后存储到 PostgreSQL 中,并且在该过程中会将数据分为固定数据和可变数据,将 event_id 作为可变数据的主键来进行维护和更新。

收集工具

devstats 使用 gha2db 工具来解析数据,并将数据存储到 PostgreSQL 中。

GitHub API

收集方式

devstats 主要利用 GitHub API 来补充和校正 GH Archive 中缺失或错误的数据。devstats 会通过定时任务来调用 GitHub API 获取两个小时以内的相关事件,并且把这些数据更新到 PostgreSQL 中。例如:Issue/PR 当前的 Label 或 Milestone 信息,就需要 API 尽快的来收集和更新。

收集工具

devstats 使用 ghapi2db 来调用 GitHub API 拉取数据并将数据存储到 PostgreSQL 中。

Git

收集方式

devstats 会将需要分析的仓库直接 clone 或者 pull 到本地,然后查看整个仓库的所有的 git log 并对它进行分析。devstats 会直接通过提交的 SHA 来定位改动并且统计改动大小信息。

收集工具

devstats 使用 get_repos 来 clone/pull 仓库,并对仓库的 git log 逐一分析。

CNCF gitdm

收集方式

CNCF gitdm 提供了一个存储开发者所属公司信息的 JSON 文件,该文件使用 Git LFS 方式存储。devstats 会从中解析出 GitHub 用户的公司信息,并与其他数据结合,这样我们就收集到了大部分贡献者的公司信息。

收集工具

devstats 使用 import_affs 来解析 JSON 文件将员工公开信息存储到数据库中。