Facebook 在从 Git 迁移到 Mercurial 之前就有 stacked diff,而且已经用了很多年。一开始用 Git 的时候,后端其实是个 SVN,只是把前端桥接为 Git,但这不妨碍大家用 stacked diff,因为整个产生 diff 的操作发生在 Git 以外。
Facebook 一直没有公开它魔改过的 Arcanist 和 Phabricator,这才是实现 stacked diff 的核心。在 Arcanist 之后 Facebook 做了 Jellyfish 作为新的客户端,但依然没有对外公开。
Jellyfish 基于 Mercurial 客户端和 Phabricator 服务器端,没办法公开给 Git + GitHub 的用户使用,于是有人做了概念上相似但又兼容 Git 的 Sapling。Facebook 内部其实不用 Sapling。(这不是唯一一个公开版本只公开概念但不公开内部源代码的东西,还有哪些你就猜吧。)
显示更多