有没有相当于Google版本控制工具piper的开源工具?

问题描述 投票:0回答:5

Google 将其所有代码库存储在一个名为 Piper 的存储库中 [1] [2] [3]

它的方法与开源替代方案(集中式“云”服务)非常不同,旨在扩展到包含数十亿文件、数千名开发人员和数百万次提交的存储库[1]

谷歌似乎没有开源它,也没有计划这样做(与他们的构建系统火焰和其他一些工具相反[4])。

您是否知道任何采用类似于 Piper 方法的开源版本控制系统?

version-control dvcs
5个回答
40
投票

简短的回答是否定的,它似乎不存在。

正如您在 Quora 文章 中读到的那样,“很难判断版本控制系统在哪里结束,以及开发工具链的其他部分从哪里开始”。

因此,首先,您需要明确您对哪些“功能”感兴趣,因为您可能对不属于 Piper 负责的功能感兴趣。

此外,请记住,在选择 VCS 之前,您的服务器磁盘空间和操作系统会限制文件数量/大小。

如果您需要集中式 VCS 和数十亿个文件,您可以使用 SVN 或 OpenCVS。

如果您需要一个拥有数千名开发人员和数百万次提交的分布式系统,请考虑一下 Git、Bazaar、Bitbucket 或 Mercurial。

但是您真的满足所有这些要求吗?

据我所知,市场上没有 Piper 的开源同类产品。

为了更好地了解集中式和分布式版本控制系统,请看一下集中式和分布式版本控制系统之间的比较

另外,看看Google 的存储库是什么样的?


21
投票

最近的两项开发为 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 会为开发人员透明地处理此问题。


6
投票

Google 构建了不止一种版本控制工具。 Piper 专门满足 google monorepo 的需求。

当google构建android时,它构建了gerrit和repo来处理版本控制。 Repo 用于同时处理许多 git 存储库,每个存储库可能有自己的维护者和发布周期。 如果没有单个组织的控制来强制执行全局构建状态或全局重构等操作,开源依赖项不适合单一存储库。 此外,Piper 的要求根本不适用于大多数地方,例如提交的性能跟上请求。


3
投票

没有与 Piper 相当的开源软件。

请注意,piper 很旧,并且具有可追溯到 perforce 时代 的老式 API。我想您会想要一个更现代的工作流程,类似于现代 DVCS 提供的功能。

我很确定您的代码库没有 Google 的 86TB 存储库那么大。你真的需要同样的东西吗?

我很确定您可以使用基于 gitmercurial 的 monorepo。也许会演变成虚拟文件系统,例如 VFS for git(如果您需要的话)。


3
投票

Meta 是开源 Sapling,它基于我们的内部源代码控制系统,但还添加了一个层,如果您想要语义而不需要可扩展性,则可以通过常规 Github 存储库来支持它。

我从未在 Google 工作过,也不知道它与他们的 mono-repo 设置有多么不同,但我已经在 Meta 工作了六年,现在这是开源的,我已立即在所有方面都转向了 Sapling我的个人项目。

© www.soinside.com 2019 - 2024. All rights reserved.