SVN Konflikte

Über das Versionsverwaltungssystem SVN werden die Dokumente und zugehörigen Dateien etc. verwaltet: sie werden mit einer eindeutigen Revisions-Nummer, einem Zeitstempel und der Benutzerkennung versehen. Durch die zentrale Verwaltung der Dokumente auf dem SVN-Server, können mehrere Redakteure an den Dokumenten arbeiten. Der Workflow eines Redakteurs beginnt i.d.R. mit dem Aktualisieren seiner lokalen Kopie, dem Editieren und endet mit dem Übertragen der Änderungen an den SVN-Server.

Bearbeiten zwei Redakteure (hier: Hinz und Kunz) jeweils ihre privaten, lokalen Arbeitskopien (hier: Datei test.xml) und übertragen ihre Änderungen wieder an das SVN-Projektarchiv, können Konflikte entstehen:

  1. Automatisch auflösbare Konflikte

    Hinz editiert im ersten Kapitel und überträgt seine Änderungen. Kunz editiert im zweiten Kapitel und überträgt seine Änderungen. Bei dieser zweiten Übertragung erkennt SVN, dass sich inzwischen etwas an der Datei test.xml getan hat - die Änderungen von Hinz. Diese Änderungen aber in der Datei, die Kunz vorliegt, nicht enthalten sind. Daher fordert SVN Kunz auf, vor dem Übertragen zuerst die Datei test.xml seiner lokalen Arbeitskopie auf den aktuellen Stand zu bringen. Bei der Aktualisierung erkennt SVN, dass es Änderungen an zwei Stellen (Kapitel ein uns zwei) gibt, die nicht miteinander im Konflikt stehen und führt die Änderungen zusammen. In der Datei sind nun sowohl die Änderungen von Hinz im ersten Kapitel wie auch von Kunz im zweiten Kapitel vorhanden. Diese Datei kann nun Kunz an das SVN-Projektarchiv übermitteln, damit alle Beteiligten den neuen Stand zur Verfügung haben.

  2. Manuell aufzulösende Konflikte

    Hinz editiert den Abbildungstitel von Abbildung fünf. Kunz - der nichts von den Editiervorgängen von Hinz weiß - editiert ebenfalls den Abbildungstitel von Abbildung fünf. Hinz und Kunz übertragen ihre Änderungen an das SVN-Projektarchiv. Derjenige, der als zweiter (hier: Kunz) seine Änderungen übertragen will, wird vom SVN aufgefordert, seine lokale Datei zuerst auf den aktuellen Stand zu bringen, da diese ja die Änderungen des zuerst übertragenden Redakteurs (hier: Hinz) noch nicht enthält. Aktualisiert nun Kunz seine Datei, erkennt das SVN die Änderungen beider Redakteure an "der selben Stelle". Dieser Konflikt kann nicht automatisch aufgelöst werden, hier muß ein intelligentes Wesen entscheiden, welcher Abbildungstitel denn nun der Richtige ist. Das SVN markiert die Datei als "in Konflikt" und überlässt das Auflösen des Konflikts Kunz. Allerdings unterstützt es Kunz, indem es ihm die entsprechende Stelle (Zeile) in der Datei sowie die beiden konkurrierenden Abbildungstitel anzeigt. Indem Kunz sich nun für einen der Abbildungstitel entscheidet, führt er die Dateien manuell zusammen. Die Datei ist nun nicht mehr "in Konflikt" und kann von Kunz an das SVN-Projektarchiv übertragen werden.

Anmerkung

Das TortoiseSVN-Projekt pflegt eine eigenständige - auch auf Deutsch verfügbare - Dokumentation zu dem Programmmodul TortoiseMerge, welche detailliert auf Aspekte wie Revisionierung, Zusammenführen und Konflikte eingeht.

Konflikte manuell lösen

Konflikte in einem Dokument, die sich von SVN nicht automatisch auflösen lassen (siehe voriges Kapitel ), müssen vom Redakteur manuell gelöst werden. Der Redakteur wird beim Versuch, eine konfliktbehaftete Datei an das Projektarchiv zu übertragen mit einem Meldungsfenster über den Konflikt informiert. Dabei wird der Redakteur zuerst aufgefordert, seine Datei zu aktualisieren:

Abbildung 3.11. SVN-Meldung: Datei veraltet

SVN-Meldung: Datei veraltet


Die beanstandete Datei (hier: Testdokument.xml) ist demnach zuerst zu aktualisieren. Kann die Datei beim Aktualisieren nicht automatisch zusammengeführt werden, wird eine Konfliktmeldung ausgegeben. Über einen Rechtsklick auf die Konfliktmeldung und den Eintrag Konflikt bearbeiten kann direkt das Programm TortoiseMerge aufgerufen werden:

Abbildung 3.12. SVN-Meldung: Konflikt

SVN-Meldung: Konflikt


Es öffnet sich nun das Programm TortoiseMerge, welches in einer dreigeteilten Fensteransicht den Redakteur unterstützt, die konfligierenden Änderungen aufzulösen. In unserem Beispielfall sieht dies wie folgt aus:

Abbildung 3.13. TortoiseMerge: Konflikte manuell auflösen

TortoiseMerge: Konflikte manuell auflösen


Die dreigeteilte Fensteransicht beinhaltet oben links den Bereich für "Deren" Datei, links oben für "Meine" Datei sowie unten das Ergebnis der zusammengeführten Datei. Die konfliktbehaftete Zeile ist in "Deren" wie in "Meiner" Datei rot hervorgehoben. Weder in "Deren" noch in "Meiner" Datei kann editiert werden - hier kann man sich über einen Rechtsklick auf die Konfliktzeile lediglich dafür entscheiden, welche Version der Zeile man als Lösung betrachtet. Kommt weder die Zeile aus "Deren" Datei, noch die korrespondierende Zeile aus "Meiner" Datei in Betracht, muß die Datei neu editiert/korrigiert werden. Dies geschieht im unteren Fensterteil "Zusammengeführt". Im Beispiel (siehe Abbildung 3.13, „TortoiseMerge: Konflikte manuell auflösen“) ist die Zeile ebenfalls rot hervorgehoben und - da keine automatische Zusammenführung möglich ist - mit Fragezeichen gefüllt. Diese Zeile (sowie die gesamte Datei) kann nun editiert werden. Ist kein Konflikt mehr vorhanden, ist auch keine Zeile in der unteren Fensterzeile mehr rot eingefärbt. Die Datei kann nun gespeichert und "als aufgelöst" markiert werden. Dies geschieht über den Button .