Wir begleiten zahlreiche Kunden beim Umstieg auf den Team Foundation Server. Dabei ist die Migration von Daten aus bestehenden System, wie z.B. einem Bug-Tracker oder einer Versionsverwaltung zentraler Gegenstand. Wir bieten für verschiedene Systeme Migrationslösungen an, unter anderem auch für Perforce. Was die Perforce-To-TFS Migrationslösung leistet und mit welchen Einschränkungen zu rechnen ist, soll im folgenden beschrieben werden.
Konzeptuelle Unterschiede zwischen Perforce und TFS
Die Hauptunterschiede zwischen beiden Systemen betreffen die Groß-Kleinschreibung von Dateipfaden (im Falle von Unix-basierten Perforce-Systemen) und die Behandlung von Verzeichnissen welche im folgenden beschrieben ist.
Perforce
- Unterstützt Dateien als versionierte Elemente der Versionsverwaltung
- Verzeichnisse sind implizit durch Dateipfade gegeben und keine expliziten Elemente der Versionsverwaltung.
- Verzeichnisoperationen (z.B. Umbenennen) werden als Dateioperationen der enthaltenen Dateien behandelt.
TFS
- Unterstützt Dateien als versionierte Elemente der Versionsverwaltung
- Unterstützt Verzeichnisse als versionierte Elemente der Versionsverwaltung
- Verzeichnisoperationen sind atomare Operationen und werden direkt eingecheckt.
Übernahme der kompletten oder partiellen Historie
Bei einer Migration von einem Perforce-Repository nach TFS werden die Eincheck-Vorgänge aus Perforce auf TFS-Seite nachgestellt. Damit ergibt sich eine neue Eincheck-Zeit im TFS, die von der ursprünglichen abweicht (siehe Spalte Date in der unteren Abbildung). Daher wurde neben dem ursprünglichen Eincheck-Kommentar auch der Originialzeitstempel des Check-ins in den Kommentar im TFS übernommen (siehe Spalte Comment in der unteren Abbildung). Der ursprüngliche Benutzer, der den Check-in durchgeführt hat, wird bei der Migration ebenfalls übernommen. Dazu kann ein Mapping konfiguriert werden, welches die Perforce-Benutzerkonten auf dei im TFS verwendeten Windows-Benutzer abbildet (Spatle User in der unteren Abbildung).
Die Art der Operationen sowie die Branch-Beziehungen bleiben soweit wei möglich erhalten (es gibt Einschränkungen beim Branchen einer Datei in mehrere Zielzweige innerhalb einer Perforce-Changelist). Das zeigt die Spalte Change in der obigen Abbildung. Die Changelist werden 1:1 als Changeset übernommen – die Transaktionssicherheit ist gegeben. Die folgende Abbildung zeigt das oben markierte migrierte Changeset 17 im Detail.
In den Changeset-Details wird deutlich, dass neben dem ursprünglichen Kommentar noch weitere Metadaten zur Migration, wie z.B. der IP bzw. dem Namen des migrierten Repository, übertragen werden.
Gelöschte Objekte
Zu den typischen Operationen gehört neben Add, Edit, Branch und Merge auch Delete. Unsere Migrationslösung migriert ebenfalls gelöschte (nicht gepurgete) Elemente wie die untere Abbildung zeigt.
Labels
Auch Labels werden übernommen. Labels im TFS sind Namen für Zusammenstellungen unterschiedlicher Versionen einer Menge von Dateien und Verzeichnissen und können unter anderem über die Historie eines Elements abgefragt werden. Die untere Abbildung zeigt die Liste der Labels für einen Branch.
Übernahme der Branch-Beziehungen
Wichtiger Bestandteil der Migration sind die Branch-Beziehungen des Quell-Repository. Diese sind für künftige Integrationen unbedingt notwendig. Unsere Migrationslösung übernimmt die Branch-Beziehungen aus Perforce. Um die unten dargestellte Visualisierung der Änderungen zu ermöglichen müssen im Anschluss an die Migration lediglich die Wurzelverzeichnisse der migrierten Branches im TFS zu sogenannten Branch-Folders erhoben werden. Dies erfolgt einmalig mit 3 Klicks im Visual Studio.
Einschränkungen bei der Migration
Einschränkungen bei der Migration betreffen vor allem Datei- und Verzeichnisnamen in Unix-basierten Perforce-Repositories, die nicht konform zum Windows-Dateisystem sind. Das sind Sonderzeichen (z.B. sind $-Zeichen nicht als erstes Zeichen in Dateinamen zugelassen) aber auch zu lange Pfade (über 260 Zeichen).
1 Kommentar