有一个开源相当于piper,谷歌的版本控制工具?

Col*_*rat 16 version-control dvcs

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

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

它似乎并不是谷歌开源的,也不打算这样做(与他们的构建系统大火和其他一些工具相反[4]).

您是否了解任何开源版本控制系统的方法类似于piper?

[1] https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext

[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

mic*_*ock 15

最近的两项开发为 Git 带来了类似 Piper 的功能:VFS for Git 和sparse-checkout.

第一个:微软最近为 Git开源了VFS,感觉它为 Git带来了 Piper 的一些 monorepo 功能。

VFS for Git 虚拟化 Git 存储库下的文件系统,以便 Git 工具可以看到看似正常的存储库,而实际上这些文件实际上并不存在于磁盘上。VFS for Git 仅在需要时下载文件。

VFS for Git 还管理 Git 的内部状态,因此它只考虑您访问过的文件,而不必检查存储库中的每个文件。这确保状态和结帐等操作尽可能快。

Microsoft 将其用于 >300GB 存储库中的 >4000 名开发人员,其 Windows Git 存储库中有 >200 万次提交。

第二个:sparse-checkout对于 Git v2.25.0 允许你只检出你的 monorepo 的一个子集。这应该会加快像git pull和这样的命令git status。有关更多信息,请参阅此博客文章。不幸的是,您必须手动指定要使用 Git 检出的子目录sparse-checkout,而 Piper 会为开发人员透明地处理此问题。

  • (不可用的)Piper 的绝佳替代品,感谢您的发帖! (2认同)
  • 现在可能值得在这里添加有关部分克隆的注释。 (2认同)

Mig*_*dal 12

简短的回答是否定的,似乎并不存在.

正如您在Quora文章中所读到的那样,"很难说出版本控制系统的结束位置,以及开发工具链的某些其他部分的开始位置".

因此,首先,您需要清楚自己感兴趣的"功能",因为您可能对Piper不负责任的功能感兴趣.

此外,请记住,您的服务器磁盘空间和操作系统将限制所选VCS之前的文件计数/大小.

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

如果您需要具有数千名开发人员和数百万次提交的分布式,请查看Git,Bazaar,Bitbucket或Mercurial.

但你真的有这些要求吗?

AFAIK在市场上没有Piper的开源等价物.

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

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


小智 6

谷歌已经构建了不止一种版本控制工具。Piper 专门用于满足 google monorepo 的需求。

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