APP下载

GitLab释出实验性新功能Partial Clone

消息来源:baojiabao.com 作者: 发布时间:2026-08-06

报价宝综合消息GitLab释出实验性新功能Partial Clone

Git近期版本开始支援部分复制(Partial Clone)功能,而程式码托管服务GitHub与GitLab也开始跟进,GitHub在年初时提到他们正在评估部分复制功能,成熟时会逐步释出,而GitLab现在则宣布开始提供部分复制功能实验性测试。

部分复制是Git的一项新功能,用来取代Git LFS(Large File Storage),部分复制使Git不再下载储存库中的每个档案,使其在大型储存库运作得更好。部分复制经GitLab、GitHub、微软和Google多年合作发展,在近期开花结果,现在于GitLab中开始实验性测试,管理员可以视情况启用该功能。

Git发展至今已经快15年,过去有许多专案不使用Git,因为像是电玩游戏这类具有许多大型二进制档案的专案,当Git复制储存库时,Git会下载储存库中每个档案的每个版本,在大多数的使用情况中,下载历史纪录或许是有用的功能,但大型二进制档案的复制和撷取速度却非常慢。

而要在Git处理大型档案,需要额外的工具,像是2010年释出的git-annex和2015年的Git LFS,以类似的方式增加Git处理大型档案的能力,其主要中心思想是,不在Git中储存大型档案,而是储存大型档案的指标,当需要使用到大型档案时,再使用指标按需下载档案。

不过,这种方法的缺点不只是易受人为错误影响,而且指针的编码方式依带宽以及档案类型决定,并同时影响储存库的所有人,由于对带宽或是储存的假设,会随着时间改变,同时也会依位置而有所不同,但是储存库的编码策略却不够灵活到可随时改变。现在推出的部分复制功能可解决这些问题,因为传输的资料较少,加快了撷取和复制的速度,也减少本机电脑的磁盘使用量,GitLab以自家gitlab-com专案举例,复制速度快50%,传输资料量减少70%。

当用户在普通的git clone指令之后加入过滤器规范,就能以该规范排除特定内容,像是使用—filter=blob:none,就可在复制时排除大型二进制档案,GitLab提到,在像是gitlab-com这类包含许多图像的专案上使用,更能体现出部分复制的优点。

GitLab的部分复制现在支援多个远端服务器,而且将会让大型档案可以储存在像是AWS S3等物件储存中,但与Git LFS不同的是,储存库或是实例管理员,可以决定物件储存的位置,以及按需求改变配置。部分复制比Git LFS使用起来更简单,因为Git LFS需要安装其他工具,而部分复制不需要,不过使用者仍需要学习使用新选项和配置。

由于在最新的Git 2.25中,过滤功能并未最佳化,因此当使用过滤规范要从Git服务器中,撷取并排除特定物件,Git需要检查储存库中的每个档案,并排除所有与过滤器规范相符的物件,不过,Git开发社群已经改进Blob大小过滤效能,预计会在Git 2.26中更新,GitLab计划会在12.10版本中跟进。

近期Git在复制相关功能的更新,除了增加部分复制功能外,也新增了稀疏签出(Sparse Checkout)功能,GitLab解释,部分复制是针对大型储存库的特定效能最佳化,而稀疏签出则是一个相关的最佳化功能,特别针对具有极大量档案和版本的储存库。

2020-03-17 10:01:00

相关文章