Google的存储库是什么样的?


62

我听说Google拥有一个巨大的私有(内部)所有代码存储库,其员工可以访问它,因此在开发事物时,他们不必重新发明轮子。我想了解更多!

Google上有没有人可以更详细地描述它,或者您是否对此有所了解?我感兴趣的是主要了解它的组织方式以及它们如何使员工轻松找到必需的庞大代码库中的内容。


2
据报道,其他使用“ monorepo”的公司是Facebook和Twitter。很想听听经验丰富的人的第一手资料。
丹尼斯

Answers:


37

这是一段解释其组织方式的视频:以Google的速度和规模发展

Ashish Kumar展示了Google如何在一个包含数亿条代码行的单个代码干中,将超过2000个项目的所有源代码保存在一个代码主干中,超过5,000名开发人员访问同一个存储库。


8
我知道其他答案有更多支持,但此视频包含了其他答案中的所有数据,然后提供了一些数据。如果您(读者)想要摘要,请阅读克里斯的答案,否则,如果您有一个小时的时间来观看此视频!
Ricket

63

大多数情况下,Google使用Perforce设置。但是,有一些内部工具可以使其他工具(例如git)在其上运行。(我不知道他们是如何做到的。)但是,大型开源项目(例如AndroidChromium)有单独的存储库。

在Perforce之上构建了许多出色的内部应用程序。例如,有一些工具可以使构建,测试和代码审查变得神奇。

部分由于这种“魔术”和测试文化,Google并未真正使用分支。每个人都检查到“主要”。对于任何项目,您都可以在没有任何专业知识的情况下查看源代码,进行构建并运行单元测试。这是巨大的。当我在Microsoft时,每种产品都需要牺牲不同的动物来构建和运行他们的测试,这是不可能的。

此外,Google 针对我们使用的主要语言提供了全公司范围的样式指南。如果您可以访问另一支团队的源代码,那么格式化就很奇怪!

至于搜索,您可能熟悉Google Code Search。有一个特殊的版本,以及其他使代码导航更容易的绝密代码搜索工具。

简而言之,Google具有以工程为中心的文化,了解工具的价值和开发人员的生产力。


1
多年来,我一直在使用您引用的样式指南,这很棒!但是,这不是Google起源的开源项目吗?内部项目是否有其他指南?
丹尼斯

1
“顶级机密”代码搜索工具已在github.com/google/kythe上开源了-它是一个子集,没有UI(不再,示例不再维护afaik),但我认为他们目标是使Kythe与其内部工具一样完整。
mmlac

3

它是巨大的:

(截至2015年1月)

  • 文件总数:10亿
  • 源文件数量:900万
  • 代码行数:20亿
  • 历史深度:3500万次提交
  • 内容大小:86 TB
  • 每个工作日的提交次数:45,000

他们使用称为Piper的内部工具,其本身依赖于Google基础架构。

资料来源:为什么Google在单个存储库中存储数十亿行代码


@CodesInChaos该信息来自幻灯片3:22的视频。幻灯片包含有关如何计算这些数字的更多说明。
本杰明·克鲁兹耶

等等,这是否意味着每个文件平均2行?
Hashim
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.