加速 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。
我们的 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。