Git 中 "sparse checkout" 的替代品

Alternatives to "sparse checkout" in Git

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

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

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

一般来说,这不是应该在结帐级别完成的事情,而是您存储库中的组织问题。

Git 主要围绕拥有整个存储库的用户展开,这就是为什么它被称为 "distributed version control" 系统而不是集中式系统的原因。

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

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

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

tldr:不,没有克隆整个存储库的情况下执行部分检查的好方法,但这应该不是问题,因为您的存储库应该很小。