【发布时间】:2011-03-04 20:29:06
【问题描述】:
我刚刚阅读了 Joel 关于分布式版本控制系统的 blogpost,但无法理解主要思想。他说 SVN 考虑版本,而 Mercurial 考虑变化。而且,据 Joel 说,它解决了合并问题。
我多次听到这个想法,但仍然没有想到它。据我所知,SVN 的合并机制也是基于更改(差异)。那么区别是什么呢?我没有分布式版本控制系统的经验,但我积极使用 SVN 分支/合并并且没有严重的问题。当然有时会出现合并冲突(当两个分支中的一段代码都被更改时)。但我看不出有什么办法可以通过某种控制版本系统自动解决这个问题。
【问题讨论】:
-
不同之处在于现代 DVCS 记录了完整的 DAG 变化,而 afaik svn 只记录线性历史(或树)并且不能正确记录合并。
-
乔尔的解释不正确。正如 tonfa 所说,这里的关键思想是在现代 DVCS 中使用 DAG 修订版。
-
Subversion 从 1.5 版开始记录合并。问题不在于是否使用 DAG,真正的问题是 Subversion 在它的合并实现中存在长期存在的错误。看到这个答案:stackoverflow.com/questions/2475831/merging-hg-git-vs-svn/…
标签: svn mercurial dvcs version-control