加速 git-fetch-pack?

Speed up git-fetch-pack?

我们的 repo(自托管 bitbucket 服务器)中有数十万个引用。其中大部分是标签。每当 git fetch 运行时,即使获取单个分支,它也会在下面调用 git-fetch-pack ,这似乎必须下载整个 refs 包,大小为数十 MB,需要数十秒或数秒为我们在远方甚至国外工作的员工下载几分钟。

有什么方法可以优化 git fetch 以便在获取单个分支时,它不会下载整个引用包,而是下载正在获取的单个分支的引用?

非常感谢!

Git 的内部传输协议存在一个长期存在的问题:让一个 Git 调用另一个 Git, 调用 Git 然后列出 所有 它的分支和标签名称以及哈希 ID:

... seemingly has to download entire pack of refs, which is in the size of tens of MBs and takes tens of seconds or several minutes ...

由于传输协议版本 1 要求发生此事务,因此只要您的 Git 使用传输协议版本 1,您就坚持使用它。

A new protocol version 2 was introduced in Git 2.18 to address this. 它可以在 Git 的版本中在此级别或更高版本中启用。 Git 2.19.0 中有一项修复。在Git 2.26.0中已经成为默认值,不需要单独启用;据推测,这意味着此时已修复所有小错误。

要轻松自动地使用它,您可以在 "sides"(服务器和客户端)上安装 Git 版本 2.26.0 或更高版本。

要在 Git 的早期版本中使用协议版本 2(必须至少为 2.18),请参阅 this GitLab page