【发布时间】:2025-12-17 22:30:01
【问题描述】:
Google 将其所有代码库存储在一个名为 piper [1][2][3] 的存储库中。
它的方法与开源替代方案(集中式“云”服务)截然不同,旨在扩展到包含数十亿文件、数千名开发人员和数百万次提交的存储库 [1]。
Google 似乎没有将其开源,也没有计划这样做(与他们的构建系统 blaze 和其他一些工具 [4] 相反)。
您是否知道任何采用类似于 piper 的方法的开源版本控制系统?
[2]https://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/
[3]https://www.youtube.com/watch?v=W71BTkUbdqE
[4]https://opensource.google.com/projects/list/developer-tools?page=3
【问题讨论】:
-
你需要存储20亿行代码吗?在基于免费云的 vcs bitbucket 方面非常慷慨。
-
不是我自己,但我遇到过一些与此相差甚远的公司,目前使用数百个 git/hg/cvs 存储库,它们之间存在依赖关系。更新几乎所有存储库共享的“通用”组件的版本是一场噩梦。因此,这些版本很少见,并且其他存储库包含应该通用且重复的代码,因为它比将其集成到现有的通用存储库中更容易。还有其他可查找性、集成测试等问题......基本上,谷歌给出的使用单一存储库的所有原因。
-
在那种情况下,我可能会看类似 SVN 的东西
-
svn?什么? (你拼错了“git”,对吧!?)
-
声称“大量相互依赖的 repos”很复杂,并且“他们保留代码副本......”作为解决方案,这不是解决方案而是导致问题的原因。我不确定在这种情况下哪些语言在起作用(除了用具体示例进行说明之外,这无关紧要),但解决方案是继续使用单独的存储库,并将已发布的版本化工件发布到二进制存储库(例如 artifactory、nexus 等),并且在其他 repos 中仅使用版本声明依赖项。例如,查看所有基于 java 的开发(包括 Scala 和其他 jvm 语言)和 C/C++(Linux 开发)
标签: version-control dvcs