TFS loves Git – ein Paar mit Zukunft?!

TFSlovesGitAuf der ALM Summit Konferenz zu Anfang dieses Jahres, gab Brian Harry (Microsoft Technical Fellow) bekannt, dass der Team Foundation Service Git Repositories hosten kann und dass das Visual Studio 2012 (Update 2) die Verwendung von Git unterstützen wird. Seitdem ist viel passiert. Die Git Server Integration ist auch für die on-premise Lösung des Team Foundation Servers 2013 verfügbar und Visual Studio 2013 hat ebenfalls umfangreiche Erweiterungen bekommen. Viele Entwickler stehen dieser frischen Beziehung skeptisch gegenüber und fragen sich „Wird diese Liebe halten?“ oder „Was findet er (TFS) nur an Ihr (Git)?“.

Vielleicht ist es getreu dem Motto „Gegensätze ziehen sich an!“ – der schwergewichtige Team Foundation Server und die leichtgewichtige dezentrale Versionskontrolle.

Um diese Beziehung besser verstehen zu können, muss man beide Systeme etwas genauer betrachten und wohl auch deren Umfeld mit einbeziehen. Brian Harry schrieb einmal selbst „When we made the decision to support Git in TFS, it was in the context of wanting to provide the best distributed version control experience for developers along with the best centralized version control experience.” 1

Was macht beide so attraktiv?

Git ist eine sehr weit verbreitete dezentrale Versionsverwaltung und verwendet im Gegensatz zu Team Foundation Version Control (TFVC) oder auch SVN kein zentrales Repository. Git wird häufig von Entwicklern benutzt, die in keiner Microsoftumgebung zu Hause sind. Die Community von Git erstreckt sich über viele Plattformen und gerade bei der Mobile Community ist Git als Versionskontrolle immer ein Thema. Damit passt Git sehr gut in unser mobiles Zeitalter, in dem man offline im Park, in der Bahn oder auch von zu Hause arbeiten möchte und auf den Breitbandanschluss im Büro verzichten muss. Viele Nutzer schätzen auch Branching und Merging Mechanismen in Git, die im Vergleich zu anderen Versionkontroll-Systemen leichtgewichtig und unkompliziert sein sollen.

Hinweis: Wenn man mehr über die Funktionsweise von Git erfahren möchte, findet man hier die entsprechenden Informationen.

Der Team Foundation Server ist mehr als nur ein Instrument zur Source Code Verwaltung und sollte auf keinen Fall nur darauf reduziert werden. Das zentrale Versionskontrollsystem ist nur ein Bestandteil seines Repertoires.  Der TFS ist laut der Gartner-Umfrage im Mai 2012 die führende ALM Plattform, und sollte auch als solche gesehen werden.

GartnerAbbildung 1: Gartner’s Magic Quadrant for ALM (Mai 2012) 2

Work Item Tracking und weitreichende Reportings durch alle Bereiche, Build Management, Test Management sind nur ein paar Bestandteile davon. Mit Hilfe des TFS und ALM können Entwicklungsteams und Unternehmen ihre Entwicklungszyklen verkürzen, ihre Software-Qualität verbessern und Kosten senken.

Was finden Sie nur aneinander?

Vielleicht sollte die Diskussion um das Paar Git und TFS anders geführt werden. Nicht worin sich die beiden Unterscheiden, sondern warum sie sich so gut ergänzen!

Verbesserungspotential ist bei beiden Systemen vorhanden. So möchte der TFS auch ausserhalb großer Unternehmen eine Rolle spielen und gerade auch auf dem mobilen Markt mitmischen, in dem viele verschiedene Entwicklungsplattformen zum Einsatz kommen. Git ist dafür die ideale Ergänzung. Es gibt für nahezu jede Entwicklungsumgebung ein Git-Plug-in, somit können die Developer in ihrer gewohnten Umgebung bleiben und ihren Lieblings-Git-Client nutzen. Durch die Entkopplung der zentralen Funktionen des TFS von Visual Studio in das Web (TFS Web Access oder TF Service), erhält jeder einen vollständigen Anschluss an den Application Lifecycle, egal in welcher Entwicklungsumgebung man zu Hause ist – der Web Access ist plattform- und browserunabhängig.

Unternehmen die beispielsweise in Java und .NET entwickeln können sich freuen. Sie können die Bedürfnisse beider Lager befriedigen. Sowohl den Java Entwickler, der gerne mit Eclipse und Git-Anbindung arbeitet, als auch den .NET Entwickler, der in Visual Studio und im TFS zu Hause ist.

Der Alltag

Wie das Paar im Alltag harmoniert, lässt sich durch das folgende Beispiel demonstrieren. Ein Unternehmen entwickelt eine mobile Anwendung für verschiedene Plattformen und könnte in Zukunft nun folgendermaßen vorgehen:

  • Ein TFS Team Projekt als zentrale Steuerungseinheit

Eine zentrale Seite im TFS Web Access dient als Informationszentrale für das Team. Diese in der Abbildung gezeigte Übersicht zeigt Informationen aus allen Entwicklerteams.

TFSlovesGit_TeamHomeAbbildung 1: Team Hub des TFS Web Access

Auf Quellcode-Ebene bedeutet das, dass sich der gesammelte Code in einer Datenbank befindet.

  • Einrichten verschiedener Teams für jede Plattform

TFSlovesGit_TeamAdminAbbildung 2: Einrichten verschiedener „Plattform“-Teams

Jede Entwicklungsplattform bekommt ein eigenes Team. Damit lassen sich Anforderungen und Aufgaben besser strukturieren und Teams können sich besser auf ihren Kernbereich konzentrieren.

  • Planung von allgemeinen Features in einem übergreifenden „Management“-Backlog

TFSlovesGit_FeatureBacklogAbbildung 3: Feature Backlog mit Kunden-Anforderungen

Das Feature Backlog ist eine Neuerung des Team Foundation Server 2013 und dient zur Planung von Anforderungen auf Management-Ebene. Diese Features sind oft plattformübergreifend und primär aus der Kundenperspektive zu betrachten. Aus ihnen gehen später die entwicklungsnahen Anforderungen hervor.

  •  Planung von Anforderung und Aufgaben in den jeweiligen Plattform-Teams

Die Anforderungen der jeweiligen Plattformen werden in den Backlogs der jeweiligen Teams definiert und geplant.

TFSlovesGit_TeamBacklogAbbildung 4: Team Backog für eine Plattform

In der obigen Abbildung ist gut zu erkennen, dass die Anforderungen für die WindowsStore-Anwendung mit einem Feature verknüpft sind. Somit wird der allgemeine Kontext der Anforderungen nicht aus den Augen verloren.

  • Entwicklung und Umsetzung der Anforderungen in den entsprechenden Entwicklungsumgebungen

Die Entwicklung der Anwendungen für die jeweilige Plattform kann im Lieblings-Tool des Entwicklers geschehen. Der Source Code wird dann über einen beliebigen Git-Client in das TFS-Git-Repository übertragen und kann dadurch mit anderen Entwicklern geteilt werden.

  • Eindeutige Zuordnung der umgesetzten Aufgaben zu eingecheckten Source Code

Eine Verknüpfung zu einem Work Item kann ebenfalls in jedem Git-Client erfolgen. Besitzt dieser keine graphische Oberfläche wie Visual Studio, in der z.B. mittels Drag&Drop die Zuordnung erfolgen kann, genügt der Zusatz <#WorkItemID> am Ende des Check-In Kommentars.

  • Koordinierung des Projekts durch umfassende Reporting Mechanismen

Über die Verlinkung der WorkItems von Feature Items bis zu den konkreten Tasks, kann eine Hierarchie aufgebaut werden, wodurch der Status sämtlicher Work Items leicht ersichtlich ist.

TFSlovesGit_FeatureToTaskAbbildung 5: Hierarchische Darstellung von Feature-Produkt Backlog-Task Items

Zusätzlich unterstützen ein Burndown und ein kumulatives Flussdiagramm bei der Auswertung des Projektverlaufs und zeigen mögliche Engpässe oder Schwierigkeiten innerhalb des Projektes auf.

  • Test-Management für alle Plattformen

Testpläne können ebenfalls plattformübergreifend angelegt und über den TFS Web Access eingesehen, geplant und ausgeführt werden.

TFSlovesGit_TestPoolAbbildung 6: Plattformübergreifende Testfälle erstellen

Alles in allem ist der Alltag von TFS und Git alles andere als langweilig. Das dargestellte Beispiel ist nur ein Ausschnitt des Möglichen, aber es verdeutlicht wie nahtlos das Zusammenspiel ist. Es ist kaum eine Erklärung nötig, wie in einem TFS-Git-Projekt gearbeitet werden muss.

Am Ende könnten die zahlreichen Vorteile alle Skeptiker dieser Beziehung zum Verstummen oder wenigstens zum Staunen darüber bringen, was dieses eigentlich so ungleiche Paar zusammen leisten kann.

Und wie geht’s mit Ihnen weiter?

Die Beziehung zwischen TFS und Git hat zugegebenermaßen Potential. Durch die Integration können beide Seiten profitieren. Man sagt, dass eine Beziehung von Dauer ist,  darf der Eine den Anderen nicht verbiegen wollen. Und das scheint Microsoft wohl bei der Integration beherzigt zu haben. Laut den Aussagen von Brian Harry ist 100% Git im TFS und die Implementierung erfolgte in sehr enger Zusammenarbeit mit dem GitHub-Team. Gute Voraussetzung also für diese Verbindung.

In den nächsten Wochen und Monaten werden sicherlich noch die einen oder anderen Erweiterungen bekanntgegeben werden und auch der Team Foundation Explorer Everywhere wird ein Update erhalten. Nur wenn die Workflows für die Nutzer in Ihrer Entwicklungsumgebungen natürlich bleiben und sie nicht zu viele Kompromisse bei der Verwendung eingehen müssen, wird die Integration von Git ein Erfolg werden.

Hinweis: In der Ausgabe 7.13 des WindowsDeveloper Magazins ist ein lesenswerter Artikel von Artur Speth, der die Nutzung von TFS-Git-Repositories im Zusammenspiel mit Visual Studio beschreibt.

GitModel2

[1] Blog Brian Harry: http://blogs.msdn.com/b/bharry/archive/2013/06/19/enterprise-grade-git.aspx
[2] Gartner „Magic Quadrant for Application Life Cycle Management“ von Thomas Murphy und Jim Duggan

Ein Gedanke zu “TFS loves Git – ein Paar mit Zukunft?!

  1. Pingback: Veröffentlichen von Git-Repositories in TFS 2013 | Karsten Kempe – Visual Studio ALM

Die Kommentarfunktion ist geschlossen.