Git中“稀疏结账”的替代方案

时间:2015-11-18 15:23:33

标签: git sparse-checkout

在我的工作中,我使用Perforce,我非常喜欢在您的软件仓库中拥有所需代码的方式,开发人员只需要在客户端中指定某些子目录,并且只将该子集下载到本地区域

根据我的理解[1] [2] [3],在Git中,稀疏结帐将检出文件夹/文件的子集,但仍会下载整个存储库,这在我的脑海中打败了对象作为我使用它的唯一原因是节省磁盘空间。您可以使用--depth下载这么多历史记录,但这不是我满意的解决方案。

当您使用Git时,大型代码项目有哪些替代方案? Linus似乎拥有one repository中的所有Linux内核代码。如果我想处理代码的一部分,我该怎么办?

1 个答案:

答案 0 :(得分:1)

作为一般规则,这不应该在结帐级别完成,而是在您的存储库中似乎是一个组织问题。

Git主要围绕拥有整个回购的用户,这就是为什么它被称为“分布式版本控制”系统而不是集中式系统。

git repo通常应该包含一个单独的,自包含的代码模块,它尽可能小且独立。如果您有分层项目,您还可以考虑使用submodules将其组织成一组包含和子存储库。

大多数git托管服务建议或要求最大回购大小小于1GB,通常要少得多,这实际上意味着它在任何现代计算机上消耗的磁盘空间量都很小。

Linux是一个例外,它是单个git仓库中托管的最大的主要项目之一,克隆它和执行其他繁重操作的性能在慢速硬件上可能非常耗时。然而,这只是Linux内核的设计选择,并且具有各种优点和缺点。

tldr:不,在没有克隆整个仓库的情况下,没有好办法进行部分结账,但这不应该是一个问题,因为你的回购应该很小。