Konfliktmanagement in VersionControl
Die Versionsverwaltung unterscheidet zwei Arten von Konflikten:
- Konflikte im Arbeitsplatz (Workspace)
- Konflikte in Aufgaben (Tasks)
Ein Konflikt wird immer durch eine rote Markierung hervorgehoben. Wird ein Konflikt erkannt, erscheint der betroffene Datensatz entsprechend farblich gekennzeichnet (siehe Abbildungen).
Konflikte entstehen, wenn sich die Objektversion (z. B. eine Quellcode-Datei) in der Versionsverwaltung verändert hat – beispielsweise durch einen Commit aus einer anderen Quelle (Issue-, Merge- oder Import-Task) – oder wenn erwartete Vorgängerversionen nicht vorhanden sind.
Konflikte im Arbeitsplatz (Workspace)
Lokal geänderte Objekte, bei denen ein Konflikt erkannt wurde, können nicht in die Versionsverwaltung übertragen (committed) werden.
Um den Konflikt zu beheben, wählen Sie zunächst den betreffenden Datensatz (rote Markierung) aus. Anschließend kann über die Schaltfläche Konflikt lösen der Bearbeitungsdialog geöffnet werden.

Der Dialog Konflikte lösen zeigt die verschiedenen Versionen des betroffenen Objekts (Beispiel: v_wbel01.w) mit den zugehörigen Metainformationen an.
Die Konfliktauflösung erfolgt dabei immer in Richtung der Versionsverwaltung:
- Quellversion (Konfliktversion): Lokale Objektversion im Arbeitsverzeichnis.
- Zielversion: Aktuelle Objektversion aus der Versionsverwaltung.
Der Merge-Editor zeigt dabei auf der linken Seite die Dateiversion aus dem Arbeitsverzeichnis (schreibgeschützt) und auf der rechten Seite die aktuelle Version aus der Versionsverwaltung. Änderungen werden immer von links nach rechts übertragen.
Über die Schaltfläche Abgleichen kann der Merge-Vorgang im internen Merge-Editor oder einer externen Anwendung gestartet werden.
Hinweis:
Bei Verwendung externer Merge-Anwendungen kann nicht automatisch überprüft werden, ob die Dateien tatsächlich abgeglichen wurden. Daher muss der Entwickler den Vorgang nach Abschluss manuell über den Toggle-Switch “Abgleich abgeschlossen” bestätigen. Erst dann kann der Prozess über Speichern abgeschlossen werden.
Nach dem Bestätigen des Dialogs wird die zusammengeführte Zielversion in das Arbeitsverzeichnis übernommen und der Konflikt gilt als gelöst.
Konflikte in Aufgaben (Task)
Auslieferungspakete aus unbekannter Quelle und oder Auslieferungspakte die Metainformationen zu Vorgänger-Objekt-Versionen beinhalten, die nicht mit der Objekt-Version aus der Versionsverwaltung übereinstimmen, werden in den Aufgaben als Konflikt erkannt.
Hierbei müssen nicht zwingend alle Objekte einer Aufgabe einen Konflikt verursachen. Nur relevante Objekte werden mit roter Markierung gekennzeichnet.

Zur Konfliktlösung wählen Sie die betroffene Aufgabe aus und öffnen über Merge Task anlegen (gelbe Schaltfläche in der Toolbar) alle damit verknüpften Datensätze.
Automatische Konfliktauflösung:
Bezieht sich ein Konflikt auf eine der Versionsverwaltung unbekannte Vorgängeraufgabe, kann VersionControl diesen Konflikt automatisch auflösen. Dazu ist lediglich das fehlende Auslieferungspaket über den Package-Service zu importieren. In diesem Fall erscheint vor dem Start des Merge-Prozesses eine Sicherheitsabfrage.
Auch in der Task-Konfliktlösung erfolgt der Abgleich immer in Richtung der Versionsverwaltung:
Die jeweilige Konfliktversion fungiert als Quelle (schreibgeschützt), und die Objektversion aus der Versionsverwaltung bildet die Zielversion, in die die Änderungen übertragen werden.
Nachdem für alle in der Konfliktliste aufgeführten Objekte eine Konfliktlösung durchgeführt wurde, kann der Vorgang über die Schaltfläche Speichern abgeschlossen werden.
Während der Konfliktbearbeitung können bis zu zwei Merge-Tasks entstehen:
- X-Merge-Task: für Konfliktauflösung im X-Bereich
- Y-Merge-Task: für Konfliktauflösung im Y-Bereich
Konflikte im jeweiligen Bereich werden automatisch dem passenden Merge-Task (X oder Y) zugeordnet und darüber aufgelöst.
Konflikte lösen
Der Dialog ist in drei Abschnitte unterteilt: Konfliktliste (links), Analyse (Mitte) und Konfliktlösung (Rechts)

Konfliktliste
Alle aufgeführten Objekte müssen bearbeitet werden, um die Konfliktlösung abschließen zu können. Zur besseren Übersicht werden bereits bearbeitete bzw. abgeglichene Objekte über ein farbiges Kontrollkästchen gekennzeichnet.
- Orange – Das Objekt wurde für den Abgleich im Merge-Editor geöffnet (Konfliktlösung: Zusammenführen / Abgleich), ist jedoch noch unverändert.
- Grün – Das Objekt wurde geändert (Konfliktlösung: Zusammengeführt / Abgleich)
- Rot – Das Objekt wurde zur Übernahme markiert (Konfliktlösung: Übernehmen)
Analyse
Informationen über die Quell- und Zielversion, sowie ermittelte Konfliktgründe und Konfliktlösungsvorschläge.
Konfliktlösung
Biete eine Auswahl an zur Konfliktlösungsoptionen.
- Zusammenführen / Abgleichen
Wird der Konflikt über einen Abgleich gelöst, so wird die Zusammenführung immer im CustomLevel Y durchgeführt! - Übernehmen
Ignoriert den Konflikt und übernimmt die Objektversion als direkten Nachfolger der in der Versionsverwaltung vorliegenden Objektversion des jeweiligen CustomLevels.
