如何高效查找大型远程GitHub仓库分支的公共祖先SHA?
问题核心与需求
我需要获取chromium仓库主分支与近27000个标签关联特性分支的公共祖先提交SHA。
已探索方法及痛点
常规Git工具的问题
git merge-base的工作原理是从分支顶端遍历父提交,直到找到共享提交,但该命令需要先执行git fetch,会下载提交SHA以外的大量数据,针对超大规模仓库效率极低。
GitHub API的局限
- GitHub的REST和GraphQL API均无内置的merge-base实现,必须手动遍历各分支的提交历史
- GraphQL查询限额为500000点(约等价于5000次查询),按27000个特性分支计算,理论上每个分支仅能遍历约20次提交就会触达限额,且标签数量还在持续增长
- REST API的限额更严格,完全无法支撑需求
其他尝试过的交互方式
试过GitHub GraphQL、GitHub REST API、git clone/fetch、直接对接Git底层服务等多种与仓库交互的方式,构建提交SHA树的过程都存在无法解决的低效问题。
待验证的替代方向
考虑直接通过HTTP及自定义头与Git底层服务交互(可对接chromium的GitHub镜像或Piper/Gitiles托管的仓库),但存在以下疑问:
- 是否可以仅下载目标分支的提交SHA及其父提交数据,实现高效遍历?
- 能否基于这些精简数据手动实现merge-base逻辑?
- 目前找不到Git底层通信服务的优质参考文档
内容的提问来源于stack exchange,提问作者DaMaxContent
相关产品推荐
相关产品推荐

