Google 将其所有代码库存储在一个名为 Piper 的存储库中 [1] [2] [3]。
它的方法与开源替代方案(集中式“云”服务)非常不同,旨在扩展到包含数十亿文件、数千名开发人员和数百万次提交的存储库[1]。
谷歌似乎没有开源它,也没有计划这样做(与他们的构建系统火焰和其他一些工具相反[4])。
您是否知道任何采用类似于 Piper 方法的开源版本控制系统?
简短的回答是否定的,它似乎不存在。
正如您在 Quora 文章 中读到的那样,“很难判断版本控制系统在哪里结束,以及开发工具链的其他部分从哪里开始”。
因此,首先,您需要明确您对哪些“功能”感兴趣,因为您可能对不属于 Piper 负责的功能感兴趣。
此外,请记住,在选择 VCS 之前,您的服务器磁盘空间和操作系统会限制文件数量/大小。
如果您需要集中式 VCS 和数十亿个文件,您可以使用 SVN 或 OpenCVS。
如果您需要一个拥有数千名开发人员和数百万次提交的分布式系统,请考虑一下 Git、Bazaar、Bitbucket 或 Mercurial。
但是您真的满足所有这些要求吗?
据我所知,市场上没有 Piper 的开源同类产品。
为了更好地了解集中式和分布式版本控制系统,请看一下集中式和分布式版本控制系统之间的比较
另外,看看Google 的存储库是什么样的?
最近的两项开发为 Git 带来了类似 Piper 的功能:VFS for Git 和
sparse-checkout
。
第一个:微软最近开源了VFS for Git,感觉它给 Git 带来了 Piper 的一些 monorepo 功能。
VFS for Git 虚拟化 Git 存储库下的文件系统,以便 Git 工具可以看到看似正常的存储库,而实际上文件实际上并不存在于磁盘上。 VFS for Git 仅在需要时下载文件。
VFS for Git 还管理 Git 的内部状态,以便它只考虑您已访问的文件,而不必检查存储库中的每个文件。这确保了状态和结账等操作尽可能快。
Microsoft 将其用于超过 4000 名开发人员,在超过 300GB 的存储库中,在其 Windows Git 存储库中进行了超过 200 万次提交。
第二个:
sparse-checkout
for Git v2.25.0 允许您仅签出 monorepo 的子集。这应该可以加快 git pull
和 git status
等命令的速度。请参阅此博文了解更多信息。不幸的是,您必须手动指定要使用 Git sparse-checkout
查看哪些子目录,而 Piper 会为开发人员透明地处理此问题。
没有与 Piper 相当的开源软件。
请注意,piper 很旧,并且具有可追溯到 perforce 时代 的老式 API。我想您会想要一个更现代的工作流程,类似于现代 DVCS 提供的功能。
我很确定您的代码库没有 Google 的 86TB 存储库那么大。你真的需要同样的东西吗?
我很确定您可以使用基于 git 或 mercurial 的 monorepo。也许会演变成虚拟文件系统,例如 VFS for git(如果您需要的话)。
Meta 是开源 Sapling,它基于我们的内部源代码控制系统,但还添加了一个层,如果您想要语义而不需要可扩展性,则可以通过常规 Github 存储库来支持它。
我从未在 Google 工作过,也不知道它与他们的 mono-repo 设置有多么不同,但我已经在 Meta 工作了六年,现在这是开源的,我已立即在所有方面都转向了 Sapling我的个人项目。