Was ist der Unterschied zwischen git-tf und git-tfs?

76

Ich habe vor kurzem die Nase voll von TFS. Ich habe gehört, dass am Ende des Tunnels ein Licht ist. Anscheinend kann ich entweder git-tf oder git-tfs verwenden und meinen Code so behandeln, als ob er von git verwaltet würde, aber in der Lage sein, auf einen zentralen TFS-Server zu pushen / von diesem zu ziehen.

Meine Hauptfrage ist, dass ich nicht sicher bin, welche davon ich verwenden soll. Es gibt git-tf, das offiziell von Microsoft unterstützt wird, und es gibt git-tfs, das es schon viel länger gibt. Was sind die Unterschiede zwischen diesen und welche sollte ich zuerst ausprobieren?

Earlz
quelle
2
Ich fühle für dich. Je früher Sie TFS ausgeben können, desto besser. Dann gehen Sie einfach mit MSysGit geradeaus. Kümmere dich nicht um irgendetwas anderes. Hat in den letzten 5 Jahren gut für mich geklappt.
Adam Dymitruk
6
@AdamDymitruk Ich arbeite mit einem ziemlich offenen Team und so, also könnte es eines Tages passieren, aber im Moment ist es zu teuer, es einfach fallen zu lassen, da wir viele andere Dinge in TFS als Quellcode haben
Earlz

Antworten:

91

Haftungsausschluss: Ich habe das git-tfProjekt gestartet und obwohl das Projekt jetzt ohne mich als häufigen Mitwirkenden in sehr kompetenten Händen ist, sollten Sie meine Meinung dazu unbedingt als stark voreingenommen betrachten. (Und wenn Sie Windows verwenden, ist dies möglicherweise unerwartet.)

Es gibt zwei grundlegende Unterschiede zwischen den beiden Werkzeugen:

  • git-tfswurde für Windows-Benutzer erstellt und auf das .NET TFS SDK geschrieben. Das TFS SDK wird nicht unter Mono ausgeführt, daher ist git-tfses für die plattformübergreifende Verwendung ungeeignet.

  • git-tfwurde für plattformübergreifende Benutzer entwickelt und auf das Java TFS SDK geschrieben. Daher kann es überall dort ausgeführt werden, wo das Java TFS SDK unterstützt wird (Windows, Mac, Linux, AIX, HP-UX, Solaris usw.). Es git-tfwurde explizit erstellt, damit Xcode-Benutzer auf TFS zugreifen können.

Unter Windows können Sie natürlich beides verwenden. Ich werde nicht unbedingt sagen, dass einer besser ist als der andere. Aber ich werde sagen:

  1. Meine größte Beschwerde git-tfsist, dass es unter Mac OS nicht funktioniert. Wenn es eine Möglichkeit gäbe, git-tfsplattformübergreifend zu arbeiten, git-tfwürde es mit ziemlicher Sicherheit keine geben.

  2. git-tfsist in einigen Fällen schneller als git-tf. Leistung war nicht unsere Priorität in den ersten Überarbeitungen, Korrektheit war.

  3. Aufgrund git-tfder breiten Plattformunterstützungsmatrix ist die Funktionalität zwangsläufig eingeschränkt. Zum Beispiel gibt es keine Benutzeroberfläche. git-tfsAuf der anderen Seite gibt es einen checkintoolBefehl, der das normale TFS-Eincheckdialogfeld öffnet. Dies kann bei der Visualisierung Ihrer Änderungen besonders hilfreich sein. (Wenn ich mich recht erinnere, können Sie von dort aus einen geeigneten visuellen Unterschied usw. öffnen.)

  4. git-tffunktioniert, indem das Git-Repository direkt aufgefüllt und TFS-Objekte direkt in die Git-Objektdatenbank heruntergeladen werden. git-tfsfunktioniert, indem eine TFS-Arbeitsordnerzuordnung in einem versteckten Ordner erstellt und dann das Git-Repository daraus gefüllt wird. Hier gibt es eine Festplattenstrafe. Wenn Sie also über enorme Repositorys verfügen, können Sie dies spüren.

  5. git-tfskann versuchen, Ihre TFS-Zweige Ihren Git-Zweigen zuzuordnen. Viele Leute werden dies als positiv empfinden git-tfs, obwohl ich es nicht tue: Das Verzweigungsmodell von git (auf Repository-Ebene) und das Verzweigungsmodell von TFS (dargestellt als Ordner im Repository) unterscheiden sich so radikal, dass sie Probleme verursachen die einfachsten Workflows. Ihr Kilometerstand kann jedoch variieren.

  6. git-tfswird aktiv von einer Community entwickelt. git-tfhat die Community nicht adoptiert.

Ich möchte nicht, dass es so klingt, als wäre git-tfes schlecht. Es ist nicht. Ich finde es eigentlich ziemlich gut. Aber es ist möglicherweise nicht Ihre beste Wahl.


Update: git-tfhat das Ende der Lebensdauer erreicht . Es wird von Microsoft nicht mehr gewartet oder unterstützt. Wir empfehlen, git-tfswenn Sie eine bidirektionale TFS <-> Git-Lösung wünschen.

Edward Thomson
quelle
2
Verwenden Sie git-tf also grundsätzlich unter Nicht-Windows und git-tfs unter Windows?
Earlz
9
Sieht so aus, als würde ich mit git-tfs gehen. Ich werde unter keinen Umständen Java auf meiner Entwicklungsbox installieren.
ATL_DEV
Wie viel davon ist über ein Jahr später noch wahr?
João Portela
Bei größeren Repos treten bei git-tfs nicht die Ausnahmen für nicht genügend Speicher auf, die bei git-tf auftreten. Das einzige Argument für git-tf ist, dass es xplat ist.
Andrew Clear
Jetzt, wo .Net überall läuft, ist es vielleicht an der Zeit, Ihre zu migrieren? :)
Mrchief
30

Haftungsausschluss: Ich bin Entwickler des git-tfs-Projekts

Edit: git-tf wird nicht mehr gepflegt ...

Bearbeiten: git-tfs wird auch nicht mehr aktiv gepflegt .

Es gibt eine Unterstützung für die TFS-Verzweigung in git-tfs (Abrufen vorhandener Zweige, Erstellen von Zweigen, Zusammenführen von Zweigen einfacher als mit TFS, ... mit branchBefehl). Es funktioniert die meiste Zeit, aber nicht mit komplexen TFVC-Zweig-Workflows ...

Sehen:

git-tfs ist möglicherweise auch das einzige Tool, mit dem Sie von TFS (VC) zu TFS (Git) migrieren, bei Bedarf Workitems verwalten oder ein einfaches Git-Repository erstellen können.

Und einige andere gute Eigenschaften ...

(Und es ist aktiver und wird mehr unterstützt )

Philippe
quelle
6

An alle, die diesen Thread finden:

Git-TFwurde offiziell eingestellt, nachdem es nach 2013 nicht aktualisiert wurde, und schlägt nun ausdrücklich Git-TFSeine Alternative vor.

Git-TF End-of-Life

Git-TF hat sein Lebensende erreicht. Es wird keine weiteren Updates geben und wird von Microsoft nicht mehr unterstützt.

Microsoft Visual Studio Team Services bietet jetzt ein einfaches Import-Tool zum Importieren eines Team Foundation-Versionskontroll-Repositorys in ein Git-Repository. Wir empfehlen, dass Sie dies verwenden, um TFVC-Repositorys in Git zu konvertieren.

Wenn Sie erweiterte Konvertierungsanforderungen benötigen oder ein TFVC-Repository überbrücken und mit einem lokalen Git-Repository arbeiten möchten, empfehlen wir das Projekt git-tfs .

Git-TF sollte nicht für neue Projekte verwendet werden, bleibt jedoch für ältere Benutzer im Codeplex-Archiv.

(Abschnitt wurde im April 2017 von Edward Thomson, seinem Initiator und Autor der akzeptierten Antwort, zur Codeplex-Seite des Projekts hinzugefügt .)

Git-TFSscheint aktiv gepflegt zu werden: https://github.com/git-tfs/git-tfs/commits/master

J Jones
quelle