如何在不克隆整个存储库的情况下构建大型软件项目?

问题描述

想想像 Google 和 Facebook 这样的大公司,当这些公司创建大型项目而无需在每个开发人员的每台计算机上克隆所有代码时使用什么方法

解决方法

公司和大型软件项目通常采用多种方法。

首先,许多大型项目使用多个存储库。开发人员不需要克隆所有存储库,只需克隆他们正在处理的存储库。例如,在工作中,我的机器上有大约 30 个存储库,其中只有少数我经常访问,而且可能有数百个由其他团队维护,我永远不会克隆或以其他方式接触。这些项目作为更大系统的一部分独立构建,因此无需一次性克隆所有代码。

其次,许多项目公开了一个库接口,因此它们可以使用语言的首选包管理器(带有内部包服务器)进行安装,而无需基于最新版本进行克隆。只有在开发人员需要对该库进行更改时才需要克隆存储库。

第三,如果人们确实有大型 monorepos,个人开发者可以使用稀疏检出和部分克隆等技术来避免克隆或检出不需要的数据,而 CI 和 CD 系统可以使用浅层克隆来构建。这大大减少了系统上需要存在的数据量,以及构建时间和开发人员体验。这种体验通常(恕我直言)比使用多个存储库更糟糕,但仍有一些人更喜欢 monorepos。