Aus Zwei mach Eins – Zusammenführen von TFS Projekten

Was tun, wenn die ursprünglich so gut gemeinte Team Projekt Struktur auf einmal nicht mehr so recht passen mag? Wie gehe ich vor, wenn ich anstelle von mehreren Team Projekten doch besser ein Team Projekt benötige? Was passiert mit dem Source Code und den bereits erfassten Work Items?
Mit Hilfe der TFS Integration Plattform lassen sich Quellcode und Work Items aus unterschiedlichen Team Projekten zusammenführen. Dies ist je nach zugrundeliegenden Prozess Templates, Source Code Strukturen und Area-Pfaden beliebig komplex. Der folgende Beitrag zeigt das Verschmelzen von zwei bestehenden Team Projekten in ein Neues.

Quellcode-Struktur und Work Items

Das nachfolgende Szenario ist einfach gehalten und zeigt zwei Team Projekte (IntegrationTest-A und IntegrationTest-B), die in ein drittes Team Projekt (IntegrationTest-Ziel) überführt werden sollen.

Die Quellcode Struktur des ersten Team Projekts ist wie in Abbildung 1 aufgebaut. Es gibt einen Haupt-Branch und eine Dev-Branch mit der Ordnerstruktur Demo | Sandbox-A | TailspinToys.

Aus2mach1 - IntegrationTest-A

Abbildung 1: Ordner-Struktur Projekt „IntegrationTest-A“

Die Quellcode Struktur im Team Projekt „IntegrationTest-B“ ist ähnlich aufgebaut und unterscheidet sich nur dadurch, dass unter dem Ordner Sandbox-B zwei Projekte abgelegt sind.

Aus2mach1 - IntegrationTest-B

Abbildung 2: Ordner-Struktur Projekt „IntegrationTest-B“

Im Ziel-Projekt ist für jeden der zu integrierenden Projekte ein Ordner angelegt. Diese Ordner dienen als Root-Ordner für den Source Code aus den Quell-Team-Projekten. Dadurch wird zum einem die Übersicht im Ziel-Team-Projekt erhöht und zum anderen werden so Merge-Konflikte während der Migration verhindert.

TFS Integration Plattform vorbereiten

Wenn dieses Migrationsszenario zum ersten Mal durchlaufen wird, muss in der TFS Integration Plattform zuerst eine neue Konfiguration angelegt werden, damit die Zuordnung von Quelle und Ziel eindeutig ist. Die Integration Plattform wird mit vier Konfigurationsvorlagen ausgeliefert, die in Form einer xml-Datei im Konfigurationsordner unterhalb des Installationsverzeichnisses liegen. Für die Migration von Quellcode und Work Items dient die Vorlage „VersionControlAndWorkItemTracking“. Dadurch wird die Oberfläche des TFS Integration Tools entsprechend dem Vorhaben aufgebaut und sieht wie folgt aus:

Aus2mach1 - IntegrationTools_1

Abbildung 3: Konfiguration für die Migration von Source Code und Work Items

Durch gelbe Hinweis-Icons wird man darauf aufmerksam gemacht, welche Einstellungen noch vorzunehmen sind, bevor der eigentliche Migrationsprozess vorgenommen werden kann. Es muss für die Migration des Quellcodes und der Work Items eine Quelle und ein Ziel angegeben werden.

Version Control Session konfigurieren

Als Erstes wird die Migration des Source Codes vorbereitet. Dazu wird als „Left Source“ der Pfad der zu migrierenden Quellcode-Dateien aus dem Team Projekt „IntegrationTest-A“ und auf der Zielseite „Right Source“ der Pfad des Ziel-Ordners im Team Projekt „IntegrationTest-Ziel“ ausgewählt.

Hinweis: Es können auch einzelne Branches oder Verzeichnisse migriert werden. Dazu muss lediglich im Integration Tool eine neue Zeile für Quell- und Zielpfad hinzugefügt werden.

Aus2mach1 - IntegrationTools_2

Abbildung 5: Einstellungen zur Migration der Versionskontrolle

Work Item Tracking Session konfigurieren

Die Konfiguration für die Migration des Work Item Tracking funktioniert ähnlich. Erst werden die entsprechenden Team Projekte als Quelle und Ziel ausgewählt, bevor eine Abfrage (Work Item Query) zur Auswahl der zu verschiebenden Work Items eingestellt wird. Per Default wird der Filter „[System.AreaPath] under ‚IntegrationTest-A‘“ vorgeschlagen. Falls zusätzliche Einschränkungen notwendig wären, könnte man sich aus der Liste der vorhandenen Work Item Queries eine Abfrage auswählen, um die Auswahl der zu migrierenden Work Items einzuschränken.

Hinweis: Um Konflikte zu bereinigen, die z.B. bei unterschiedlichen Prozess Templates auftreten könnten, lässt sich ein Feld-Mapping erzeugen. Dadurch lassen sich unterschiedliche Work Item Felder aus Quell- und Zielprojekt einander zuordnen. Dafür muss unter „Custom Settings“ die zugrundeliegende XML Konfiguration geändert werden.

Aus2mach1 - IntegrationTools_3

Abbildung 6: Einstellungen zur Migration der Work Items

Migrationen durchführen

Nach dem Erstellen und dem abschließenden Speichern der Konfiguration, kann die eigentliche Migration beginnen.

Das TFS Integration Tool sollte nun die eingestellte Konfiguration anzeigen und der aktuelle Status der Migration auf „Not yet migrated“ stehen. Durch die Selektion von „Start“ wird die Migration gestartet.

Die Migration des ersten Projekts in das Ziel-Projekt sollte eigentlich relativ problemlos verlaufen, da im Ziel-Projekt noch keine Work Items angelegt wurden und noch keine Dateien unter Versionsverwaltung stehen. Demzufolge sollten an dieser Stelle auch keine Fehler auftreten können.

Aus2mach1 - IntegrationTools_5

Abbildung 7: Ergebniss der ersten Migration

Nach der erfolgreichen ersten Migration kann man in Visual Studio überprüft werden, ob a) alle Work Items aus Projekt A in das Ziel-Projekt übertragen worden sind und b) ob der Source Code in den dafür vorgesehen Ordner migriert wurde. Wenn man sich nicht sicher ist, ob ein Work Item durch die Migration angelegt worden ist, kann man darüber über die Work Item Historie Aufschluss gewinnen.

Aus2mach1 - IntegrationTools_6

Abbildung 8: Work Item Historie eines migrierten Work Items

Wenn alles überprüft wurde, erstellt man eine neue Konfiguration im TFS Integration Tool für die Migration der Artefakte aus dem zweiten Team Projekt. D.h. noch einmal den Source Code Pfad des Quell-Team-Projekts angeben, diesmal Projekt „IntegrationTest-B“, sowie den Pfad auf Seiten des Ziel-Projekts „IntegrationTest-Ziel“. Anschließend werden noch die Einstellungen für die Übertragung der Work Items vorgenommen und dann die Migration gestartet.

Aus2mach1 - IntegrationTools_8

Abbildung 9: Migrierte Artekfakte im Ziel-Projekt

Wenn man nun abschließend in der Versionskontrolle das Projekt „IntegrationTest-Ziel“ überprüft, sollten in den Ordnern „Test-A“ und „Test-B“ die Anwendungen aus den migrierten Team Projekten zu finden sein und darüber hinaus sollten alle Work Items im Ziel-Projekt vorhanden sein.