Immer wieder sehe ich, dass Entwickler Probleme mit dem Mergen von Code im Repository haben. Das Mergen ist aber kein mystischer Vorgang, bei dem uns der TFS unseren Code zerstört. Das Mergen ist einfach nur das Zusammenführen von Änderungen mehrerer Personen an denselben Dateien. Wenn z.B. zwei Entwickler einer Klasse je eine Funktion hinzufügen, dann meldet der TFS einen Konflikt.
Die Funktionen “Keep Local Version” und “Take Server Version” dienen nur zum Zurücksetzen und spielen hier keine Rolle. Ein Klick auf “Merge Changes In Merge Tool” öffnet das Mergetool. In den oberen beiden Fenstern sieht man die Änderungen: lokal (Yours) und vom Server (Theirs). Im unteren Fenster sieht man die fertige Datei.
Wenn hier beide Funktionen übernommen werden sollen, dann muss man einfach nur jede Änderungen aus dem Kontextmenü mit “Apply Change” anwenden. Im untern Fenster kann man dann die Änderungen sehen.
Nach Bestätigung auf OK sind die Änderungen LOKAL verfügbar. Jetzt muss man den Merge testen: Build erstellen, Codeanalyse und UnitTests durchführen etc. Dieser Teil wird oft vergessen oder vernachlässigt! Sind alle Tests erfolgreich, dann können die Änderungen eingecheckt werden.
Eine sehr komfortable Version ist der AutoMerge. Wenn dieser aktiviert ist, dann kann sie problemlos benutzen werden. Wenn der TFS Änderungen nicht automatisch zusammenführen kann, dann ist die Funktion deaktiviert und der Merge muss von Hand durchgeführt werden.
Probleme beim Mergen werden oft durch veränderte Projektdateien (.csproj) verursacht. Dabei verhalten sich diese Dateien genau wie anderen auch. Im Beispielprojekt wurde von 2 Entwicklern je eine Datei hinzugefügt:
Man muss jetzt nur über Apply Both Changes…
beide Dateien übernehmen. Fertig.
Auch komplexe Änderungen lassen sich so einfach zusammenführen. Gelöschter Text wird immer rot angezeigt. Blau sind Änderungen. Hinzugefügte Elemente werden grün angezeigt. Mit gedrückter Ctrl./STRG Taste können mehrere Änderungen selektiert und dann “Apply Change” angewendet werden.
Wie man in folgender Abbildung sieht, wurden alle Änderungen sauber zusammengeführt.
Weiterführende Informationen finden Sie auf MSDN: