【外评】为什么 Facebook 不使用 Git

💡 原文中文,约5000字,阅读约需12分钟。
📝

内容提要

这篇文章讨论了Facebook为什么选择使用Mercurial而不是Git。Facebook在2012年遇到了Git扩展限制,导致操作缓慢。他们考虑了Perforce和Bitkeeper等替代方案,最终选择了Mercurial。文章还提到了Facebook对Mercurial进行了改进,并将其用于大型单体。作者认为技术决策往往是由人驱动而不是由技术驱动的。

🎯

关键要点

  • Facebook在2012年遇到Git扩展限制,导致操作缓慢。
  • Facebook考虑了Perforce和Bitkeeper等替代方案,最终选择了Mercurial。
  • Facebook对Mercurial进行了改进,并将其用于大型单体。
  • 技术决策往往是由人驱动而不是由技术驱动的。
  • Facebook最初使用Git,但在2012年左右开始遇到性能瓶颈。
  • Git的维护者建议将大型代码库拆分,但Facebook认为不可行。
  • Mercurial的架构更简洁,易于扩展,适合Facebook的需求。
  • Facebook团队通过黑客马拉松活动深入了解Mercurial。
  • 迁移到Mercurial的过程中,团队进行了充分的沟通和准备。
  • Facebook的工程师与Mercurial维护者的合作促进了技术的采用。

延伸问答

Facebook为什么选择Mercurial而不是Git?

Facebook选择Mercurial是因为在2012年遇到Git的扩展限制,导致操作缓慢,而Mercurial的架构更简洁,易于扩展,适合他们的需求。

Facebook在迁移到Mercurial的过程中采取了哪些步骤?

Facebook团队进行了充分的沟通,绘制了Git和Mercurial之间的命令和工作流程图,并统计了Git命令的使用频率,以便顺利迁移。

Facebook在使用Git时遇到了什么性能问题?

Facebook在使用Git时,随着代码库的扩大,操作变得缓慢,特别是在对所有文件进行统计时,基本命令需要45分钟以上才能完成。

Facebook考虑过哪些替代方案来替换Git?

Facebook考虑过Perforce和Bitkeeper等替代方案,但最终选择了Mercurial,因为其性能与Git相似且架构更简洁。

Facebook对Mercurial做了哪些改进?

Facebook对Mercurial进行了性能改进,并利用其“diffs”概念创建了一种“堆栈”模式,实现了新颖的代码审查并行化。

技术决策在Facebook是如何受到人驱动的?

Facebook的技术决策往往是由人驱动的,工程师们与Mercurial维护者的合作和沟通促进了Mercurial的采用,而不是单纯依赖技术的优劣。

➡️

继续阅读