繁体   English   中英

Git中“稀疏签出”的替代方法

[英]Alternatives to “sparse checkout” in Git

在我的工作中,我与Perforce一起工作,并且我非常喜欢这样的方式:可以在仓库中拥有尽可能多的代码,开发人员只需在客户端中指定某些子目录,并且仅将该子集下载到本地即可。

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

使用Git时,大型代码项目有哪些替代方案? Linus似乎将所有Linux内核代码都放在一个存储库中 如果我想处理部分代码,该怎么办?

通常,这不是应该在结帐级别执行的操作,而似乎是存储库中的组织问题。

Git围绕拥有整个存储库的用户大量旋转,这就是为什么它被称为“分布式版本控制”系统而不是集中式系统的原因。

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

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

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

tldr:不,没有一种好方法可以执行部分​​检出而不克隆整个存储库,但这应该不是问题,因为您的存储库应该很小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM