1

在我的工作中,我使用 Perforce,我真的很喜欢这样的方式,您可以在您的软件仓库中拥有尽可能多的代码,并且开发人员只需要在客户端中指定某些子目录,并且只有该子集被下载到本地区域。

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

使用 Git 时,大型代码项目有哪些替代方案?Linus 似乎将所有 Linux 内核代码都放在了一个存储库中。如果我想处理代码的子集,我会怎么做?

4

1 回答 1

1

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

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

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

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

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

tldr:不,没有克隆整个 repo 的情况下执行部分结帐的好方法,但这应该不是问题,因为你的 repos 应该很小。

于 2015-11-18T15:38:17.480 回答