加速git提取包



我们的repo(自托管比特桶服务器(中有数十万个ref。它们大多是标签。每当git fetch运行时,即使获取一个分支,它也会在下面调用git-fetch-pack,它似乎必须下载整个refs包,这些refs包有几十MB大小,需要几十秒或几分钟才能下载给我们在遥远地点甚至国外工作的员工。

有没有任何方法可以优化git fetch,以便在获取单个分支时,它不会下载整个ref包,而是下载正在获取的单个分支的ref?

非常感谢!

Git的内部传输协议有一个长期的问题:让一个Git调用另一个Git,被调用的Git会列出所有的分支和标记名以及哈希ID:

。。。似乎必须下载整个refs包,大小有几十MB,需要几十秒或几分钟。。。

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

Git2.18中引入了一个新的协议版本2来解决这个问题。它可以在这个级别或更高版本的Git中启用。Git 2.19.0中有一个修复程序。它已成为Git 2.26.0中的默认值,因此不需要单独启用;据推测,这意味着在这一点上,任何小问题都得到了修复。

为了方便和自动地使用它,您可以在"两侧"(服务器和客户端(安装Git 2.26.0或更高版本。

要在早期版本的Git中使用协议版本2(所有版本都必须至少为2.18(,请参阅此GitLab页面。

最新更新