Google将其所有代码库存储在名为piper [1] [2] [3]的单个存储库中。
它的方法与开源替代方案(集中式云服务)非常不同,旨在扩展到拥有数十亿文件,数千名开发人员和数百万次提交的存储库[1]
Google似乎没有开源,也没有计划这样做(与他们的构建系统大火和其他一些工具相反[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
答案 0 :(得分:11)
简短的回答是否定的,似乎并不存在。
正如您在Quora article中所读到的那样,“很难说出版本控制系统的结束位置,以及开发工具链的其他部分开始的位置”。
首先,您需要明确自己感兴趣的“功能”,因为您可能对Piper不负责任的功能感兴趣。
另外,请记住,您的服务器磁盘空间和操作系统会限制所选VCS之前的文件数量/大小。
如果您需要集中式VCS和数十亿个文件,可以使用SVN或OpenCVS。
如果您需要拥有数千名开发人员和数百万次提交的分布式应用程序,请查看Git,Bazaar,Bitbucket或Mercurial。
但你真的有这些要求吗?
AFAIK市场上没有Piper的开源等价物。
为了更好地了解集中式和分布式VCS,请查看this Comparison between Centralized and Distributed Version Control Systems
答案 1 :(得分:9)
最近的两项开发为Git带来了类似Piper的功能:用于Git的VFS和sparse-checkout
。
第一个:Microsoft最近开放了VFS for Git的源代码,感觉好像它将Piper的monorepo功能引入了Git。
用于Git的VFS虚拟化了Git存储库下的文件系统,以便Git工具可以看到实际上是普通存储库的文件,而实际上这些文件实际上并不存在于磁盘上。 Vit for Git仅在需要时下载文件。
用于Git的VFS还管理Git的内部状态,因此它仅考虑您已访问的文件,而不必检查存储库中的每个文件。这样可以确保状态和结帐等操作尽快完成。
Microsoft在超过300GB的存储库中为超过4000名开发人员使用了Windows Git存储库中的200万次提交。
第二个:Git v2.25.0的sparse-checkout
允许您检出Monorepo的一部分。这样可以加快git pull
和git status
之类的命令。有关更多信息,请参见this blog post。不幸的是,您必须手动指定要使用Git sparse-checkout
检出的子目录,而Piper对开发人员则透明地进行处理。
答案 2 :(得分:1)
Google已经构建了多个版本控制工具。 Piper专门针对Google monorepo的需求。
当google构建android时,它构建了gerrit和repo来处理版本控制。 Repo用于同时处理许多git存储库,每个存储库都有自己的维护者和发布周期。开源依赖关系不适用于monorepo,没有单个组织的控制来执行诸如全局构建状态或全局重构之类的事情。此外,piper的要求根本不适用于大多数地方,例如提交请求的性能。
答案 3 :(得分:1)
没有等效于吹笛者的开源软件。
请注意,吹笛者是旧的,并且具有可追溯到perforce area的老式API。我想您会想要一个更现代的工作流程,类似于现代DVCS提供的工作流程。
我很确定您的代码库不如Google的86TB存储库大。你真的需要同样的东西吗?
我很确定您可以使用基于git或mercurial的monorepo。并可能演变成一个虚拟文件系统,例如 [git的VFS] [2](如果需要)。
[2]:Git的VFS