我刚刚阅读了关于分布式版本控制系统的Joel的blogpost,并且无法理解主要思想。他说,SVN根据版本进行思考,而Mercurial根据变化进行思考。据Joel称,它解决了合并问题。分布式版本控制系统合并易用性细节
我几次听到这个想法,但仍然没有想到它。据我所知,SVN的合并机制也是基于变化(差异)。那么区别是什么呢?我没有使用分布式版本控制系统的经验,但我主动使用SVN分支/合并,并没有出现严重问题。当然,有时会合并冲突(当两个分支中的一段代码被更改时)。但我看不出如何通过某种控制版本系统自动解决这个问题。
不同之处在于现代DVCS记录完整DAG的变化,而afaik svn只记录线性历史记录(或树)并且没有正确记录合并。 – tonfa 2010-06-17 08:41:35
请参阅http://stackoverflow.com/questions/2613525/what-makes-merging-in-dvcs-easy,以及http://stackoverflow.com/questions/2850996/mercurial-vs-subversion-其性能更好/ 2851020#2851020 – VonC 2010-06-17 09:09:06
乔尔的解释是不正确的。正如Tonfa所说,这里的主要想法是使用现代DVCS中的修订版DAG。 – bialix 2010-06-18 04:49:20