【外评】为什么 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的采用,而不是单纯依赖技术的优劣。
➡️