返回

代码集中管理的秘密:Google的数十亿行代码是怎样藏在一个库里的?

见解分享

Google 代码管理秘史

在科技巨头Google,数十亿行代码是如何管理的?在《ACM通信》的一篇论文中,谷歌基础设施小组的工程师揭示了其中奥秘。

在 1999 年之前,Google 使用 CVS 来进行代码管理。为了寻求更强大的代码管理工具,他们于1999年采用了 Perforce。一开始,Google 只有一个 Perforce 主机,但随着代码库的不断增长,他们意识到需要对代码库进行拆分。在2006年,Google 将代码库拆分成了35个不同的 Perforce 代码库,以提高性能和可扩展性。

但是,随着时间的推移,Google 又发现 35 个代码库也开始变得难以管理。因此,在 2014 年,他们决定将所有代码都集中到一个单一的代码库中,这就是现在著名的 "Monorepo"。

Monorepo:Google的代码管理利器

Monorepo 是一个单一的代码库,包含了所有项目的源代码。Monorepo 的好处在于它可以提高代码的可重用性和可维护性。它还可以使代码审查和协作变得更加容易。

Monorepo 这种集中式代码管理方式与分布式代码管理方式形成鲜明对比。在分布式代码管理中,每个开发人员都有自己独立的代码库,他们可以自由地提交和合并代码。然而,在 Monorepo 中,所有的代码都集中在一个代码库中,这使得代码审查和合并变得更加困难。

Google 为什么选择 Perforce?

对于为什么选择 Perforce 作为代码管理工具,论文的作者给出了几个原因。首先,Perforce 是一款功能强大的代码管理工具,它提供了许多有用的特性,例如代码分支、合并和代码审查。其次,Perforce 非常稳定,可以处理大规模的代码库。第三,Perforce 具有良好的扩展性,可以随着代码库的增长而进行扩展。

Monorepo 的挑战和好处

将所有代码都集中到一个代码库中,也存在一些挑战。例如,Monorepo 会导致代码库变得非常大,这可能会对性能造成影响。此外,Monorepo 还会使代码审查和合并变得更加困难。

不过,Monorepo 的好处也显而易见。首先,Monorepo 可以提高代码的可重用性和可维护性。其次,Monorepo 可以使代码审查和协作变得更加容易。第三,Monorepo 可以提高代码库的安全性。

结语

Google 的代码管理实践为我们提供了许多宝贵的经验。Monorepo 的使用可以提高代码的可重用性和可维护性,并使代码审查和协作变得更加容易。但是,Monorepo 的使用也存在一些挑战,例如代码库会变得非常大,代码审查和合并会变得更加困难。