Es ist nicht so sehr die Tatsache, dass sie verteilt werden, sondern vielmehr, dass sie Changesets statt Versionen verfolgen. (Allerdings arbeiten verteilte Systeme in der Regel mit Changesets, während zentralisierte Systeme häufig Versionen verwenden, da verteilte Systeme mit einem versionsbasierten Ansatz nicht funktionieren, während zentralisierte Systeme davon profitieren können).
Subversion sagt, OK, zuerst hatte ich diese Version und dann hatte ich diese Version. Und dann, wenn es Zeit ist zu verschmelzen, braucht es die zwei Versionen, vergleicht sie und macht fundierte Vermutungen darüber, wie man sie kombiniert. Git, mercurial und ähnliche SCMs, sagen wir, OK, zuerst hatte ich nichts, dann hat jemand diese Änderung gemacht und dann hat jemand anders diese Änderung gemacht, usw. Wenn es Zusammenführungszeit ist, müssen sie im Grunde nur die Änderungen anwenden Ordnung, hier und da Zeilennummern korrigieren und Dateiumbenennung berücksichtigen, aber das ist es im Grunde genommen.
Subversion hat nicht wirklich genug Informationen, um eine intelligente Zusammenführung durchzuführen: Es sieht nur die Unterschiede, aber nicht wo sie herkommen.
Ich denke, viel von der "SVN Merging Debatte" kommt von DVCS-Fans. Die Verschmelzung ist eine der Sachen, die SVN im Vergleich zu CVS verbessert hat, aber CVS '(zu Recht) schlechte Reputation könnte sich auf SVN auswirken. In unserem Team verschmelzen wir viel in SVN und ich kenne keine Probleme. – sbi
Sehr verwandt: http://stackoverflow.com/questions/2613525/what-makes-merging-in-dvcs-easy – kolobos