Github Compare two commits API 大提交对比无法获取全量变更文件
GitHub Compare two commits API 超300个变更文件获取方案
GitHub 官方的 Compare two commits REST API 存在未在公开文档中标注的硬限制:单次请求最多返回 300 个变更文件,且变更文件列表本身不支持分页,仅靠该接口无法直接获取1000个这类超量的差异文件。
你可以通过以下两种替代方案实现全量变更文件获取:
- 拆分对比区间分批次查询
先调用 Compare API 拿到两个目标提交之间的全量提交记录(提交列表支持分页获取),再逐个调用单个提交查询接口GET /repos/{owner}/{repo}/commits/{commit_sha}拉取每个提交对应的变更文件,最后对所有文件列表做去重合并,即可得到两次提交之间的全量差异文件。如果遇到单个提交修改超过300个文件的极端场景,可以再将提交区间做更细粒度的拆分处理。 - 拉取提交树手动计算差异
分别调用GET /repos/{owner}/{repo}/git/trees/{tree_sha}?recursive=1接口拉取base提交和head提交的全量仓库树信息,对比两个提交的文件路径、哈希值,即可直接得到所有新增、修改、删除的文件列表。如果还需要对应文件的具体diff内容,可再针对每个差异文件单独拉取内容对比。
目前没有办法绕过原Compare API的300文件限制直接通过该接口拿到全量变更,上述替代方案可以实现完全相同的业务效果。
内容的提问来源于stack exchange,提问作者msmyamada
相关产品推荐
相关产品推荐

