Subversion 合并变体的原因

Reason for Subversion merge variations

虽然我通常使用 git 但至少在工作中我被迫使用 Subversion。我知道两者之间的许多(如果不是全部)差异归结为 git 是分布式的,而 Subversion 是集中式的,但是在 Subversion 中合并似乎有一个额外的复杂层,看起来是分开的。特别是 --reintegrate 选项对我来说似乎有点不必要。

是否有特定的设计决策导致 Subversion 具有不同类型的合并或者集中式系统的不太明显的结果?或者我只是没有看到 git 中的合并选项与 Subversion 中可用的合并形式之间的某种联系?

我不太了解 SVN,但据我所知,SVN 存储版本之间的差异,而 Git 存储实际快照(当然是优化过的)。我认为这方面的影响可能比 Git 分布的事实更大。如果有的话,Git 能够负担得起分布式的原因是因为它的数据模型。

你可能 google 关于这个主题的一些 good resources,但我要加两分钱:

  1. Subversion 最初并没有跟踪哪个修订被合并到哪个分支。它有一个分支模型作为树枝 - 没有循环,没有跟踪你将相同的变化重新整合到两个不同分支的事实。您通过手动选择所需的提交来进行合并。在此模型之上添加了更高级的合并技术,这自然会导致某些笨拙。

  2. 从技术上讲,这个关于合并的问题与分布式 v 集中式模型无关,你会得到与单个隔离 git 存储库 v svn 相同的差异。