首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 Git 而放弃 Mercurial,浏览器 Firefox 宣布六个月后迁移主存储库!

整理 | 屠敏

出品 | CSDN(ID:CSDNnews)

“同时支持两个版本控制系统的压力真的太大了”,在 Mozilla 团队发出这样的感慨之际,其负责工作流程和发布管理的高级工程经理 Byron “Glob” Jones 在 firefox-dev 邮件列表中发帖正式宣布:

Firefox 浏览器的主存储库将从 Mercurial 迁移到 Git。

Mercurial vs Git

事实上,很长一段时间以来,Firefox 桌面开发一直支持 Mercurial 和 Git 用户。

作为两种不同的分布式版本控制系统(DVCS),Mercurial(通常称为 HG)与 Git 有相似之处,都允许开发者在本地克隆存储库、进行提交、创建分支和合并等操作,而不需要与中央服务器保持持续连接。这使得开发者可以在没有网络连接的情况下继续工作,并且可以更灵活地进行协作。

同时,二者也各有千秋,如:

在数据模型方面,Git 使用快照(snapshot)模型,它在每次提交时记录文件的完整快照,这些快照被组织成树状结构的提交历史;Mercurial 则使用增量(changeset)模型,它在每次提交时记录文件的更改集合,以便从一个版本转换到另一个版本。

在分支模型维度,Git 的分支非常轻量,它使用引用(references)来表示分支,可以很容易地创建、合并和删除分支;而 Mercurial 的分支更重一些,每个分支通常有自己的命名分支头,分支之间不会像 Git 那样轻松合并,通常需要执行显式的合并操作。

命令行工具上,Git 和 Mercurial 都有自己的一组命令行工具,用于执行版本控制操作。这些命令在两者之间有些不同,因此需要学习不同的命令语法和工作流程。

性能上,Git 通常被认为要优于 Mercurial,尤其是在处理大型存储库和执行某些操作(如切换分支)时;而 Mercurial 在某些情况下可能更慢,尤其是在大型存储库中执行某些操作时。

此前,Mercurial 作为管理 Linux 内核源代码的替代工具,常被开发者拿来应对 BitKeeper 免费版本停止支持的情况。不过,后来随着 Linux 之父 Linus Torvald 在消失了一个周末带来了 Git 这个小工具之后,Git 主要就被用于 Linux 内核,而 Mercurial 在其他地方变得流行。

然而,同时维护 Mercurial 和 Git 系统,这种双重 SCM 的要求给已经捉襟见肘的 Firefox 团队带来了沉重的负担。因此他们才做下了放弃 Mercurial 的决定。

迁移方法

按照 Byron “Glob” Jones 在邮件列表中提出的方案,Firefox 团队将分两个阶段完成迁移,其一是面向开发者,其二是后端基础设计的逐步迁移。

第一阶段——面向开发人员

Firefox 团队将把主要存储库从 Mercurial 切换到 Git,同时在开发人员的工作站上取消对 Mercurial 的支持。在这一点上,贡献者只需要在本地使用 Git,并继续使用 moz-phab 提交补丁进行审阅。

所有更改将会提交到 Git 存储库,然后单向同步到 Firefox 现有的 Mercurial 基础设施中。

第二阶段——基础设施

各团队将致力于将基于 Mercurial 的基础设施逐步迁移到 Git。这将分阶段进行,而不是一次性完成。

到此阶段结束时,Firefox 团队将完全取消对 Mercurial 的支持。

当前将 Firefox 主存储库从 Mercurial 迁移到 Git 还处于规划阶段,预计这一举措“在迁移开始之前至少需要六个月”。

最后,Byron “Glob” Jones 也承诺道,“ 我们将继续使用 Bugzilla、moz-phab、Phabricator 和 Lando。尽管我们将在 GitHub 上托管存储库,但我们的贡献工作流将保持不变,目前不接受 Pull 请求。

不受欢迎的 Mercurial 正被逐渐放弃

无独有偶,早在 2019 年,知名代码托管平台 BitBucket 便宣布同样的措施,即从 2020 年 2 月 1 日起,用户创建新仓库时不能用 Mercurial;2020 年6 月 1 日起,全站不再支持 Mercurial 功能,移除所有 Mercurial 仓库。

对于这样做的原因,当时 BitBucket 也给出了解释:

一方面,同时支持 Mercurial 与 Git 两个版本控制系统意味着分散关注点,导致交付时间和技术开销翻倍。

另一方面,由于 Git 是更广泛使用的工具,Mercurial 在扩展时可能存在被忽视的风险。根据 Stack Overflow 开发人员调查,近 90% 的开发人员使用 Git,而 Mercurial 是最不受欢迎的版本控制系统,只有约 3% 的开发人员采用。事实上,Bitbucket 上的 Mercurial 使用量正在稳步下降,而选择 Mercurial 的新 Bitbucket 用户比例已下降至不到 1%。Bitbucket 希望通过放弃 Mercurial 来更加专注地为用户构建最佳体验。

不同的使用体验

在不少开发者看来,现如今 Firefox 全面拥抱 Git,无疑再次证明了 Mercurial 的没落,不过,也给很多开发者带来一丝遗憾。

来自 HN 上的用户 @mark_undoio 评价道:

看到又有一个坚持使用 Mercurial 的人转向 Git,感到有点伤感。后者在网络效应方面领先得多,但我一直更喜欢 Mercurial。我本可以更多地使用它,但是——网络效应的问题,即我所在进行的项目使用了 Git。

主要问题在于,Mercurial 的思维模型符合我的思路,命令行界面是可预测且一贯的,同时这个工具仍然适用于大型代码库。我发现 Git 要求我在使用过程中的不可预测时刻考虑其实现细节和内部术语。它仍然能完成工作,但感觉就像在工作中不时地做随机的验证码。

@sedatk 表示:

我完全同意 Mercurial 卓越的易用性和更简单的思维模型。然而,感觉很被遗弃。我不知道是什么原因造成的。在我看来,它是 Git 的一个完全可行的替代方案。

@cardanome 认为:

在 GitHub 上“全力以赴”意味着让自己依赖于每天都可能改变其条件的 Microsoft 服务。Firefox 依靠谷歌的资金生存已经够糟糕的了,我不明白他们为什么要放弃更多的自由来依赖微软。

你从那些只会因为你在 Github 上而做出贡献的人那里得到的那种省力的贡献无论如何都不是你需要或想要的。

另外,如果他们想要替代方案,Gitlab 无论如何都更适合合作。

与此同时,也有一些开发者发表了不同的看法,如 @klodolph 表示:

当我在工作中使用 Mercurial 时,感觉那些奇怪的小工作流程都被锁在插件后面,让人感到超现实。我明白 Mercurial 对于初学者来说要容易得多,我也明白我可以使用插件,但当我使用 Git 时,所有这些重写历史的工具都恰好在我需要的地方。

参考:

https://news.ycombinator.com/item?id=38160161

https://groups.google.com/a/mozilla.org/g/firefox-dev/c/QnfydsDj48o

https://devclass.com/2023/11/07/mozilla-will-move-firefox-development-from-mercurial-to-microsofts-github/

https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OsvoaaUGsiW6DHTzrl6__t9g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券