TFS Team Projekt mit Git und TFVC

TFSlovesGitGit als Versionskontrolle im TFS gibt es seit nun fast zwei Jahren und fast genauso lange existiert ein vielgefragter Wunsch: Kann man ein Team-Projekt mit Git und TFVC als Versionskontrollen erzeugen? Seit der Veröffentlichung des TFS 2015 Update 1 wissen wir, ja das geht! Und wie, das zeige ich Euch in diesem Post.

Gleich als wichtigstes Vornweg: Wir müssen kein neues Team-Projekt anlegen, um diese Funktion zu bekommen. Wir können unsere bestehenden Team-Projekte nehmen und einfach mit entsprechenden Repositories erweitern – in Git-basierten Team-Projekten um ein TFVC Repository und in TFVC-basierten Team-Projekten um Git Repositories.

Hinweis: TFVC steht für Team Foundation Version Control und ist die „traditionelle“ Versionskontrolle des TFS. TFVC ist ein zentralisiertes Versionskontrollsystem.

Und das Ganze ist so einfach wie es sich anhört:

TFVCGit_VersionControlSettings_4

Abbildung 1: neues Git Repository in bestehendes TFVC Team Projekt aufnehmen

TFVCGit_VersionControlSettings_3Abbildung 2: neues TFVC Repository in bestehendes Git Team Projekt aufnehmen

Während das Hinzufügen von zahlreichen Git Repositories möglich ist, bekommt man beim Versuch ein zweites TFVC Repository in ein Team Projekt aufzunehmen die Fehlermeldung „A TFVC repository already exists for TFVCGitProject project“.

TFVCGit_Code_Switch

Abbildung 3: Umschalten zwischen den Versionskontrollen innerhalb eines Team Projekts

Im Team Explorer in Visual Studio (getestet mit Visual Studio 2015 Update 1 CTP) sieht man auf der Übersichtseite dann folgendes.

TFVCGit_TeamExplorer_Connect

Abbildung 4: Visual Studio 2015 Update 1 CTP Team Explorer

Unterhalb des Team-Projekt-Knotens im Team Explorer befinden sich nun alle verfügbaren Repositories. In Abbildung 4 sieht man, dass das MasterRepo noch nicht geklont wurde und mit Hilfe von Connect, verbindet man den Team Explorer mit dem Git Repository und stellt den Team Explorer auf Git-Funktionalität um (Commit, Sync, Branches und Pull Requests).

Ein Mehrwert für das gemeinsame Nutzen von Git und TFVC innerhalb eines Team-Projekts ist definitiv die gemeinsame Verwendung der Planungskomponenten. Bisher mussten Git-Teams und TFVC-Teams mit getrennten Backlogs arbeiten und konnten keine gemeinsame Planung durchführen, obwohl vielleicht am gleichen Produkt gearbeitet wurde. Diesen Teams ist jetzt auch geholfen. Egal ob TFVC oder Git, es gibt ein gemeinsames Backlog und es kann von beiden Versionskontrollen eine Verknüpfung zu den entsprechenden Work Items hergestellt werden.

 

TFVCGit_TeamExplorer_WorkItem

Abbildung 5: Work Item Verknüpfung zu Git Commit

Ihr seht, es geht bereits relativ viel im ersten Versuch Git und TFVC in einem Team Projekt zu vereinen.

Wofür ich allerdings noch keine Lösung oder Möglichkeit gefunden habe, ist innerhalb einer Build Definition Code aus Git Repositories und aus dem TFVC Repository zu holen (z.B. für einen Integration Build). Anscheinend wird derzeit innerhalb einer Build Definition nur ein Repository -Typ unterstützt.

Außerdem stell ich mir die Frage, wird es einmal möglich sein, Code zwischen den beiden Repositories zu synchronisieren? Ich könnte mir nämlich vorstellen, dass dies für große Firmen mit einer zentraler Versionierung wünschenswert wäre, damit das Deployment der Software nach wie vor zentral gemanagt aber den Entwicklern mit Git die ersehnte Flexibilität eingeräumt werden kann.

Wir dürfen gespannt sein, was in den nächsten Versionen noch alles ermöglicht wird.

2 Gedanken zu “TFS Team Projekt mit Git und TFVC

  1. Karsten,
    wenn Du TFS 2015 Build vNext benutzt um ein TFVC Projekt zu builden, so hindert Dich niemand als erster Build Step – z.B. ein Powershell Step – den benoetigten Code aus dem Git Repo zu holen und anschliessend dann sowohl TFVC als auch den GIT Code zu kompilieren.

    • Hi Daniel.
      Du hast natürlich Recht, an diese Möglichkeit hatte ich gar nicht gedacht. Ich hatte nur nach einer Lösung im UI der Build Definition gesucht und eben dort lässt ich nur ein Repository auswählen.
      Danke für den Hinweis!
      Viele Grüße,
      Karsten

Die Kommentarfunktion ist geschlossen.