走进 Git 的新 bundle-uri 兔子洞

这是关于作者尝试撰写一个有些晦涩的 Git 特性并陷入漫长曲折的过程,最终为 Git 代码库提交了一个极小补丁的故事。

  • bundle-uri 是什么:它由 GitLab 的 Gitaly 项目提出,能通过下载缓存文件加速克隆,在克隆 Git 仓库时,git clone命令会与服务器协商,而 bundle-uri 可提供预计算的起始点 URL,减少后续协商时间,还能提供本地文件作为起始点加快速度。
  • 是否使克隆更快:答案是不确定的。使用本地文件选项可加快克隆速度,如在启动有挂载点的 VM 时;但理论上使用预计算的 bundle 文件从本地 CDN 克隆应更快,但实际测试中却更慢,原因是 Git 解压 bundle 文件时只复制本地分支引用,导致大量已有的对象被重新下载。
  • 补丁及应用场景:作者深入研究代码找到问题所在并提交了补丁,现在该补丁在 Git 邮件列表中。对于 Git 服务端(如 GitHub、GitLab 等),此特性可减少 CPU 服务器负载;对于内部运行 Git 服务器的用户,可减少服务器负载,如 GitLab 的实验性功能;对于自动化设置(如 CI 或自动化测试系统),本地文件版本的 bundle 可很有帮助;而在未来,Git 客户端可能会自动下载 bundle 文件,除非进行了特定配置。
阅读 10
0 条评论