Ich fange mit SVN an und so viele Quellen sagen, dass das Zusammenführen in SVN im Vergleich zu DVCS-Tools sehr schwierig ist. Die neuesten Fragen, die ich hier auf SE finden konnte, stammen aus dem Jahr 2012.
Manchmal wird erwähnt, dass der Grund dafür ist, dass SVN vor Version 1.5 keine Metadaten hatte, aber SVN ist jetzt in Version 1.8.9.
Angesichts der Tatsache, dass SVN jetzt viel ausgereifter als Version 1.5 ist, und insbesondere der Tatsache, dass wir SVN 1.5 nicht verwendet haben, damit wir nicht unter dem erwähnten Mangel an Metadaten leiden - gibt es immer noch viel Gültigkeit in diesen Argumenten gegen SVN?
Ich verstehe, dass DVCS einen völlig anderen Ansatz verfolgt, der oft wünschenswerter ist, aber für diejenigen, die SVN aus irgendeinem Grund "müssen", ist das Zusammenführen nicht mehr wirklich "Hölle", oder?
quelle
Antworten:
Es funktioniert gut, wenn Sie sich an die einfachen Fälle halten , aber es gibt einige komplexe Fälle , die dies nicht tun.
Die Einschränkungen, an die ich denken kann:
Der neueste Vorfahr kann nur gefunden werden, wenn er sich in einem der beteiligten Zweige befindet. Also , wenn Sie erstellen
branches/this
undbranches/that
beide austrunk
und dann versuchen , fusionierenbranches/this
zubranches/that
, wird es nicht wissen , was zu tun ist . Das heißt, Sie können nur einen Zweig zum oder vom übergeordneten Zweig zusammenführen. Dies kann auftreten, wenn Sie zwei Feature-Zweige starten und später feststellen, dass die Features voneinander abhängig sind und diese kombinieren müssen.Während es behauptet, dass es Umbenennungen verfolgen kann, findet das Zusammenführen von Zweigen, wenn Dateien auf der einen Seite verschoben und auf der anderen Seite geändert wurden, nicht immer die richtigen Dateien zum Zusammenführen, und das manuelle Korrigieren ist etwas mühsam, da die erforderlichen Informationen nirgendwo zurückbleiben Hand.
Hinzugefügte Dateien verursachen bei späteren Zusammenführungen manchmal falsche Konflikte.
Da Subversion kein separates Verzweigungskonzept hat, können Sie nur einen Teilbaum eines Projekts zusammenführen, was ziemlich schnell zu großen Problemen führen kann. Es wird dringend empfohlen, stets darauf zu achten, dass vollständige Zweige zusammengeführt werden. Leider werden die Eigenschaften von Zusammenführungsinformationen aus irgendeinem Grund manchmal in Unterverzeichnissen angezeigt, auch wenn sie überflüssig erscheinen und die Zusammenführung für den gesamten Zweig korrekt durchgeführt wurde.
Zu guter Letzt ist es langsam . Merges an einem Projekt einer ernsthaften Größe dauert oft Minuten , wo die meisten DVCS es tun kann unter einer Sekunde.
quelle
Nach meiner Erfahrung wurde das Zusammenführen in SVN in Version 1.6 "behoben". Ich arbeite sowohl in Mercurial als auch in SVN, und seit Version 1.6 von SVN scheint das Zusammenführen auf beiden Plattformen ungefähr gleich viel Arbeit zu bedeuten. Die einzige Ausnahme könnte sein, dass Sie daran denken müssen, die
--reintegrate
Option anzugeben, wenn Sie mithilfe von SVN von einem Zweig zurück in den Trunk führen.Dies ist nur meine operative Erfahrung. Ich weiß nichts über die Interna von SVN.
quelle