Mercurial与GIT和SVN相比如何表现?

17

最近,Phil Haack等人在Twitter上发布消息称CodePlex已经支持Mercurial作为分布式版本控制系统(DVCS),我想这值得一看。

作为目前个人项目使用SVN并在办公室使用TFS的人,Mercurial在可用性方面如何比较?功能有哪些,有哪些更好的Mercurial托管服务可供选择?


请为此添加一个“git”标签。 - Chad Okere
@Chad Okere - 好的,没问题。完成了。 - Phil.Wheeler
标签不足以完全描述这个SO问题!D: - Spoike
任何分布式版本控制系统的精彩之处在于,您可以复制任何类型的协作工作流程,包括模仿“集中式”风格的存储库。 我有偏见,因为我主要使用Mercurial,但我过去还广泛使用了CVS和SVN,老的VCS相对于DVCS而言感觉就像石器时代。 您将会看到越来越多的项目转向{Git,Bazaar,Mercurial}。 一旦您尝试了DVCS,您就不会再回到SVN ;) - SyntaxT3rr0r
6个回答

18

太好了,这正是我所需要的一切。感谢你的提示,@Dave Ward。 - Phil.Wheeler
4
请注意,这篇分析已经过时,例如Git不久前已经支持了“智能”HTTP传输。 - Jakub Narębski
还有一些内容已经过时了:Mercurial现在也有rebase(不再是Git的优势);git-gc现在有点自动化了(不再是Mercurial的优势),而且Windows支持也不那么糟糕了(我不确定这是否仍然是Mercurial的优势)。当然,微软已经宣布他们打算将Git支持集成到他们的TFS产品线中。 - Eamon Nerbonne

6

相比于我最近再次使用的SVN,Mercurial真是太棒了。它给了我一种“为什么还有人会使用SVN”的感觉。虽然SVN很不错,但Mercurial确实更好用。

对于个人项目,我毫不犹豫地会转向一个分布式版本控制系统(DVCS)。它做的事情和SVN一样,但效率更高,速度更快。学习曲线只需要理解一些术语。

实际上,SVN和DVCS之间的区别在于每个人都有一个完整的工作库存在自己的系统中。如果你决定有一个“主服务器”,那么它与你拥有的完全相同,只不过设置为不断地通过网络提供服务而已。要同步这些版本库之间的更改,只需发送/接收(push/pull)这些更改即可。


5

1

也许只是我个人的问题,但我使用Mercurial已经有六个月了,在专门使用SVN数年后,由于某些原因,它并不适合我的思维模式。我清楚自己在SVN中在做什么,如果出现问题,我几乎总是知道如何解决。从概念上讲,我对Mercurial没有任何问题 - 例如,我喜欢拥有存储库的本地副本 - 但实际上,我总是会丢失一些东西。我认为这可能是因为在SVN中合并是相当重要的事情,而在Hg中则是正常的事情。我想要更多地控制我的合并。在SVN中,哪些变更集先于哪些变更集总是很清楚的,但Mercurial似乎缺乏这方面的功能。即使是TortoiseHg在视觉上非常好,但似乎也没有足够的机会看到正在合并的内容。


1

在Google的比较中未提及的一点是Git似乎要快得多。Mercurial看起来足够快(至少对于小项目),但无论项目大小,Git都是异常迅速的。


请记住,您正在比较闪电和超音速喷气式飞机。Git唯一真正的问题是在Linux以外的其他平台上的工具支持,但我想这将最终得到改变。 - Esko
2
实际上,当项目的检出大小逐渐接近GB时,Git和Mercurial都会变得非常缓慢。因此,大小确实很重要。 - Spoike
3
TortoiseGit 是一个非常不错的 Windows 图形用户界面工具。我猜想其他平台的用户大多数会使用命令行工具,也许再结合像 gitg 这样的图形化树形可视化软件。 - Tronic
2
你上一次对一个大项目进行重新打包是什么时候?这个过程非常缓慢,需要大量的内存...(Mercurial不需要重新打包)。 - tonfa
与HG相比,Git在HTTP上的爬行速度更快。如果您不需要SSH与SSL的额外安全性,并且想要简单的东西,那么这可能是一个因素。 - Chris S

0

SVN拥有许多第三方工具的支持,包括IDE和缺陷跟踪系统等,其中还包括相当不错的TortoiseSVN

大多数开发者过去都使用过SVN,因此在团队中让新开发者适应SVN更快。

对于您来说,这种事情的重要性如何,只有您自己能够决定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接