Commit-Konflikte lösen | Siemens | Mendix

Direkt zum Inhalt

Auflösen von Commit-Konflikten

  • Adam Fothergill

  • 23. April 2015
  • min lesen

In fast jedem Szenario arbeiten mehrere Entwickler zusammen, um ein Projekt abzuliefern. Und obwohl es hilfreich ist, mehrere Personen einzubeziehen, erhöht es die Wahrscheinlichkeit, dass widersprüchliche Versionen Ihres Projekts erstellt werden. Aber das ist etwas, was Entwickler seit Jahrzehnten wissen.

Bei einem meiner letzten Projekte war das Team gezwungen, sich einen ganzen Tag lang auf eine Seite zu konzentrieren. Dies führte zu zahlreichen Konflikten, die uns nur noch mehr ausbremsten und Frustrationen innerhalb der Gruppe hervorriefen.

Um sie zu vermeiden, haben wir schließlich einfach angefangen, an einer Version des Projekts zu arbeiten! Manchmal lassen sich diese Probleme nicht vermeiden (z. B. bei einer teamweiten Überprüfung einer einzelnen Seite) und man ist gezwungen, sich damit auseinanderzusetzen.

Mendix Low-Code Plattform macht es einfach, Versionen zu verfolgen und Konflikte zu vermeiden. Die Mendix Team Server verwendet Subversion (SVN) zur Verwaltung der Projektversionen. Der Team Server speichert den Quellcode des Projekts und bietet dem Team eine Möglichkeit, Änderungen zu verfolgen.

Wenn Änderungen vorgenommen werden, kann der Teamserver die neueste Version des gesamten Projekts intelligent aktualisieren und steuern. Wenn zwei Teammitglieder dieselbe Seite, denselben Microflow oder dasselbe Domänenmodell ändern, kann dies zu einem Konflikt führen.

In diesem Beitrag gehe ich darauf ein, wie Konflikte entstehen und wie Sie sie lösen können.

Wie Konflikte entstehen

Nehmen wir an, es gibt zwei Teammitglieder, Ryan und Lisa. Da der Quellcode auf dem Teamserver liegt, gibt es drei Kopien des Projekts. Zu Beginn sind sie alle gleichwertig:

Projektkopien-1

Ryan nimmt eine Änderung vor (aus A wird A') und überträgt sie dann zurück an den Teamserver, wobei er die Teamserverversion auf A' aktualisiert.

Projektkopien-2

Lisa nimmt dann eine andere Änderung vor (A wird zu A'').

Projektkopien-3

Bevor Lisa ihr Projekt wieder auf den Team-Server übertragen kann, muss sie es auf die neueste Version aktualisieren. Wenn die Aktualisierung abgeschlossen ist, erhält Lisa eine Benachrichtigung über den Konflikt.

Konfliktbenachrichtigung

 

Da wir nun einen Konflikt haben, wollen wir uns ansehen, wie er gelöst werden kann.

Konflikte lösen

In unserem Beispiel kann Lisa ihr Projekt erst dann committen, wenn sie den Konflikt gelöst hat. Zuerst muss sie den Konflikt finden – was Sie über das Dock „Änderungen“ tun (wie in der Benachrichtigung angegeben).

Wechseldock

Doppelklicken Sie auf die Nachricht, um zu sehen, welche Komponenten in Konflikt stehen. Doppelklicken Sie erneut, um genauere Einzelheiten zum Konflikt anzuzeigen.

Wechseldock2

Hier sehen wir zwei Spalten: „Ihre“ und „Meine“. „Meine“ bezieht sich auf die Änderungen, die Sie gerade vorgenommen haben (in unserem Beispiel würde sich „Meine“ auf Lisas Änderungen beziehen). „Ihre“ würde sich auf die Änderungen beziehen, die das andere Teammitglied (Ryan) vorgenommen hat. Unser Konflikt ist ziemlich trivial – die Position des Startereignisses im Mikrofluss hat sich geändert. Wir können sehen, dass der relative Mittelpunkt ursprünglich -100;200 (A) war, Ryan hat ihn auf -220;200 (A‘) geändert und Lisa hat ihn auf -95;195 (A‘‘) geändert.

Es gibt zwei Möglichkeiten, diesen Konflikt zu lösen. Klicken Sie dazu mit der rechten Maustaste auf den Konflikt im Dock „Änderungen“, um das folgende Menü zu öffnen:

Konflikte lösen

Hier sehen wir die beiden Optionen: „Konflikt mit meinen lösen“ und „Konflikt mit ihren lösen“. Wenn wir „Konflikt mit meinen lösen“ auswählen, werden die von Ryan vorgenommenen Änderungen (A‘) ignoriert, wenn diese Version übernommen wird. Wenn wir „Konflikt mit ihren lösen“ auswählen, werden die von Lisa vorgenommenen Änderungen (A‘‘) entfernt und Lisas Dokument wird identisch mit Ryans A‘.

Diese Aktionen können nicht rückgängig gemacht werden, daher ist es wichtig, dass Sie Ihre Auswahl sorgfältig treffen. Wenn Sie sich nicht sicher sind, welche Version Sie verwenden sollen, sprechen Sie mit Ihren Teammitgliedern. Sie können Ihnen bei der Entscheidung helfen, welche Version Sie am besten behalten sollten.

Was ist, wenn ich nicht weiß, welches ich verwenden soll?

Was ist, wenn Lisa nicht weiß, was Ryan vorhat? Oder vielleicht braucht Lisa einige von Ryans Änderungen, aber auch das, was sie getan hat? Die beiden angebotenen Lösungen sind möglicherweise nicht gut genug.

Wenn das Konfliktelement etwas anderes als das Domänenmodell ist, kann es dupliziert werden. Wenn das Dokument duplizierbar ist, erstellen Sie eine Kopie und hängen Sie am Ende „_Conflict“ an. Anschließend kann der Konflikt mit der Option „Konflikt mithilfe ihres lösen“ behoben werden. Jetzt hat Lisa eine Kopie von A‘ und A‘‘! Die beiden können dann nebeneinander angezeigt werden und Lisa kann entscheiden, welche Teile sie verwenden möchte.

Wählen Sie Ihre Sprache