Was sind die großen Unterschiede zwischen TFVC (TFS Version Control) und Git für die Quellcodeverwaltung bei Verwendung von Visual Studio 2013?

101

Es gibt unzählige Fragen und Antworten zu Git im Vergleich zu TFVC Source Control, aber keine aktuellen Antworten beziehen sich auf die Integration von Git in Team Foundation Server / Service, die ich finden kann.

Ich beginne mit der Entwicklung von grünen Weiden mit einer Vielzahl von Sprachen (C #, C ++, PHP, Javascript, MySSQL) mit Visual Studio 2013. In Zukunft wird es einige iOS-Entwicklungen geben. Ich bin sehr vertraut mit SVN, VSS und TFVC für die Quellcodeverwaltung. Ich habe Git jedoch noch nie benutzt. Ich bevorzuge TFS für das Prozessmanagement / die agile Entwicklung ... Es ist nicht perfekt, aber es lässt sich gut in Visual Studio integrieren.

Um mir bei der Entscheidung zwischen diesen beiden Systemen zu helfen ...

Was sind die großen Unterschiede zwischen TFVC und Git bei der Quellcodeverwaltung bei Verwendung von Visual Studio 2013?

  • Ist der einzige Vorteil in meinem Fall ein lokales Repository (ohne zu sagen, dass es unbedeutend ist) und iOS-Entwicklungsunterstützung?
  • Ist der einzige Nachteil von Git die Kommandozeilenschnittstelle (einige würden argumentieren, dass dies kein Nachteil ist ;-P).
  • Haben Sie Erfahrung mit der Visual Studio 2013-Benutzeroberfläche für Git? Reicht das aus, um das grundlegende Verzweigen / Zusammenführen ohne die Befehlszeilenschnittstelle zu unterstützen?
  • Gibt es eine detaillierte Startanleitung für Git, die zeigt, wie Git mit Visual Studio 2013 verwendet wird? Microsoft hat ein Video zum Integrieren eines vorhandenen Git-Repositorys in Visual Studio 2013, aber ich suche nach einem Neuanfang mit Git und VS 2013.

Ich suche hier kein Buch, sondern nur ein paar Stichpunkte und vielleicht einige relevante Links von Leuten, die sowohl TFVC als auch Git verwendet haben.

Greg Grater
quelle

Antworten:

115

Was sind die großen Unterschiede zwischen TFS und Git für die Quellcodeverwaltung bei Verwendung von VS 2013?

MSDN hat eine sehr umfangreiche Seite mit allen Funktionen und Unterschieden zwischen Team Foundation Version Control und Git .

Ist der einzige Vorteil in meinem Fall ein lokales Repository (ohne zu sagen, dass dies unbedeutend ist) und IoS-Entwicklungsunterstützung?

Nein, es gibt noch viel mehr, aber es handelt sich häufig um fortgeschrittene Git-Szenarien. Lokales Repo, Offline-Unterstützung und vollständige lokale Wiedergabetreue im Verlauf sind unglaublich leistungsfähig. Mit Visual Studio erhalten Sie dies sofort. Es gibt noch ein paar andere Funktionen, die auch großartig sind! Die Möglichkeit, von einem Repository zu einem anderen zu verzweigen und zusammenzuführen, ist sehr leistungsfähig. Ich empfehle Ihnen, das Pro Git-Buch für diese nachzuschlagen. Git in TFS ist nur ein weiterer Git-Server. Es verfügt über nahezu alle Funktionen, die der Standard-Git bietet.

Durch die Möglichkeit, den Verlauf vor dem Zusammenführen neu zu schreiben, können Sie eine Reihe kleinerer Änderungssätze entfernen oder kombinieren, sodass der Verlauf sauberer und als Mensch leichter lesbar ist.

Ist der einzige Nachteil von Git die Kommandozeilenschnittstelle (einige würden argumentieren, dass dies kein Nachteil ist ;-P).

TFVC hat auch eine Kommandozeile, die Leute benutzen sie einfach nicht. Für Leute, die Git verwenden möchten und nie viel mehr tun als TFVC, müssen sie die Benutzeroberfläche wahrscheinlich nicht wirklich verlassen, sie werden jedoch nicht viele der coolen Funktionen erhalten ...

Es kann einige andere Nachteile geben, hauptsächlich aufgrund der Tatsache, dass es anders ist als das, was Menschen gewohnt sind. Es ist nicht allzu schwer, sich in den Fuß zu schießen, wenn Sie sich nicht die Zeit nehmen, um zu lernen, was Git macht, wenn Sie Dinge tun. Dinge wie Rebase und Squash sind wirklich mächtig und erstellen einen sehr sauberen Verlauf, aber es kann Menschen mit dem Problem zurücklassen, dass sie bei falscher Verwendung nicht mehr zusammengeführt werden können. TFS hat die Möglichkeit, einige Sicherheitseinstellungen vorzunehmen, um die Rechte zu verlieren, sehr dumme Entscheidungen in einem Git-Repository zu treffen .

Ein sehr cooles Add-On für Git-Benutzer unter Windows ist PoSHGit . Es bietet die automatische Vervollständigung von Befehlen in der Powershell-Befehlszeile.

Haben Sie Erfahrung in der VS 2013 GUI für Git? Reicht das aus, um das grundlegende Verzweigen / Zusammenführen ohne die Befehlszeilenschnittstelle zu unterstützen?

Es hat alles, was Sie für grundlegende Operationen benötigen. Sie müssen jedoch in der Lage sein, die verschiedenen Zweige zu visualisieren, um zu wissen, was los ist. Da der Git-Server und das lokale Repo nur Git sind, kann Ihnen jeder Git-Client hier weiterhelfen. SourceTree ist hier eine Option. Der Git für Windows-Client ist ein anderer.

Für Standardoperationen, Einchecken, Auschecken, Zusammenführen, Verzweigen (oder Drücken, Ziehen, Abrufen, Festschreiben, Zusammenführen) funktioniert die Benutzeroberfläche einwandfrei.

Gibt es eine detaillierte Startanleitung für Git, die zeigt, wie Git mit VS 2013 verwendet wird? MS hat ein Video zur Integration eines vorhandenen Git-Repos in VS 2013, aber ich suche einen Neuanfang mit Git und VS 2013?

Das Starten mit Git ist an mehreren Stellen verfügbar ... Dies sind einige Optionen:

Andere gute liest:

Und ein paar Tools, die es wert sind, installiert zu werden:

jessehouwing
quelle
3
Die ALM Rangers werden in Kürze ihre Git for TFVC-Benutzeranleitung hier veröffentlichen: vsarbranchingguide.codeplex.com/releases . Die aktuelle Beta-Version hat es noch nicht, ich gehe davon aus, dass es mit dem nächsten Batch fallen wird :).
Jessehouwing
8
Nach fast einem Jahr seit meinem ursprünglichen Beitrag dachte ich, ich würde Sie alle wissen lassen, dass wir VS2013 mit Git erfolgreich verwendet haben. Ich mag die Möglichkeit, mehrere Repositorys unter einem einzigen Teamprojekt zu erstellen. Wir hatten einige Probleme beim Zusammenführen. In einigen Fällen wird die automatische Zusammenführung falsch ausgewählt. Was also nach einer erfolgreichen Zusammenführung aussieht, ist es wirklich nicht. Wir überprüfen jetzt alle zusammengeführten Dateien. Es gibt auch bestimmte Fälle, in denen die Zusammenführung erstickt und einen Fehler in der VS-Benutzeroberfläche auslöst (libgit2-Zusammenführungskonflikt). Um dies zu beheben, müssen wir zur cmd-Eingabeaufforderung gehen und einen Git-Pull ausgeben (kein Spaß).
Greg Grater
1
Ich weiß, dass es einen Fix für diesen letzten Fehler als Teil von Update 4 gibt. Und dass es Fälle gab, in denen die Endzeileneinstellungen zwischen Entwicklern unterschiedlich waren, was dazu führen kann, dass diese Probleme auftreten.
Jessehouwing
5
Wir verwenden VS 2013 mit Update 4, seit es vor Monaten gelöscht wurde, und es scheint, dass alle unsere Git-Probleme über die GUI behoben wurden. Wir haben die Gewohnheit, regelmäßig vom Remote-Server abzurufen, um unsere lokalen Repositorys auf dem neuesten Stand zu halten. Außerdem hat MS in letzter Zeit mehrere positive Aktualisierungen des Product Backlog / Task Boards durchlaufen. Direkt von der Tafel aus können Sie jetzt die Beschreibung bearbeiten, zuweisen, den Status festlegen und die Priorität / Reihenfolge des Elements anpassen.
Greg Grater
1
Die Links "Git vs TFVC" verweisen auf "Erste Schritte mit Git". Bedeutet das jetzt, dass wir Git besser über TFVC verwenden sollten? ; D hat einen neuen Link gefunden: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider
17

Um einige verwirrende gemischte Begriffe zu klären, die häufig mit TFS verwendet werden

Team Foundation Server (TFS) ist ein Application-Management - Tool, das umfasst eine Quelle Versionskontrollsystem (VCS) Komponente.

Die von TFS verwendete VCS- Komponente ist hauptsächlich Team Foundation Version Control (TFVC).

Die Frage wäre also TFVC vs Git

(Tatsächlich unterstützt TFS Git als VCS Option.)

Die Frage ist also: TFVC vs Git

jessehouwing hat eine großartige Antwort, die dies ausführlich behandelt. Bitte verweisen Sie darauf

Was die Auswahl angeht, gewinnt Git meiner Meinung nach

  1. Es ist leicht: Einfach einzurichten und zu verwenden.
  2. Aufgrund seiner verteilten Natur ist es sehr widerstandsfähig gegen Katastrophen. Jemand wird immer eine Kopie des Repos haben.
  3. Offline-Arbeit ist einfach, Sie arbeiten mit Ihrem eigenen vollständigen Repository. Sie können Änderungen festschreiben, zurücksetzen, den Verlauf durchsuchen usw. Sie müssen nur online sein, wenn Sie mit einem Remote-Repository synchronisieren möchten.
  4. In TFS gibt es keine einfache Möglichkeit, den Status Ihrer Änderungen (Hinzufügen, Ändern, Löschen von Dateien) zu speichern und in einen anderen Code-Status zu wechseln. (Zum Beispiel, um an zwei Funktionen zu arbeiten und hin und her zu wechseln). In git checken Sie einfach einen anderen Zweig aus.
James Wierzba
quelle
1
TFS hat Zweige und Regalsätze (was # 5 ermöglicht) und Sie können Ihre Projekte sogar so konfigurieren, dass sie git verwenden, wenn Sie es wirklich wollen. TFS VCS hat auch eine Befehlszeile für #. Es ist nicht leicht, aber es macht verdammt viel mehr als Git, da es ein vollständiges Projektmanagement / Fehlerverfolgung / Arbeitsverfolgung / Release-Management / Build-Management / Check-in-Richtlinie / integrierte Tests hat.
Matthew Whited
@MatthewWhited Sicher ist es möglich, aber es ist im Vergleich zu git extrem umständlich, da es eine verzeichnisbasierte Implementierung im Vergleich zur graphbasierten Implementierung von git ist. Beachten Sie, dass ich angegeben habe, dass es keine simpleMöglichkeit gibt, dies zu tun.
James Wierzba
@MatthewWhited Ich stimme auch dem zusätzlichen Tool für den Anwendungslebenszyklus zu, aber ich beziehe meine Antwort nur auf Lösungen zur Steuerung der Quellcodeversion.
James Wierzba
1
IDK ... Ich finde TFS ziemlich einfach zu bedienen. Obwohl ich auch nicht alle von GIT erstellten Zweige mag, da es komplexer wird, sicherzustellen, dass jeder ein und derselbe Code ist, der für einige schnell und für andere langsam ist.
Matthew Whited
Weiß nicht. GIT ist einfach zu kompliziert für die Aufgabe, die es ausführen soll, und sehr unintuitiv (warum ist es eine Pull-Anfrage und keine Push-Anfrage ?!). Die TF-Quellcodeverwaltung ist sehr einfach und kann jedem neuen Entwickler in meinem Team innerhalb von Minuten erklärt werden. Ich sehe die Förderung der Arbeit vor Ort auch als großen Nachteil innerhalb eines Teams und sogar individuell. Wie verhindern Sie, dass Sie Ihre Arbeit in Git verlieren, ohne das Projekt mit Zweigen zu übersäen? (Dafür gibt es Regale in TFS - ON THE SERVER)
Cesar
4

Ist der einzige Nachteil von Git die Kommandozeilenschnittstelle (einige würden argumentieren, dass dies kein Nachteil ist ;-P).

Wenn Sie mit der Befehlszeilenschnittstelle nicht vertraut sind, stehen für Git mehrere GUI-Frontends zur Verfügung. Git selbst enthält tatsächlich das Repository-Browser-GUI-Tool namens gitkund git-gui- eine GUI für Git. Dann gibt es Apps von Drittanbietern wie Git-Cola , TortoiseGit und andere .

kralyk
quelle
2
Natürlich bietet Visual Studio selbst eine GUI für Git. Es gibt jedoch immer Zeiten, in denen Sie in die Befehlszeile eintauchen möchten, um Dinge zu tun, die sonst unmöglich sind. Eine GUI, die alle Git-Befehle verfügbar macht, ist genauso schwierig wie die Befehlszeile.
Jessehouwing
Es gibt Befehlszeilen-Elektrowerkzeuge. Zum Beispiel, um einen Zweig vollständig aus der Existenz zu entfernen.
Ingenieur