Die kleine Umfrage von Martin Fowler sagt viel über den Stand der TFS in den vergangenen Jahren aus. "gefährlich" ist ganz richtig. (Ich denke, dies bezieht sich auf die Art und Weise, in der Änderungen, die außerhalb von VS vorgenommen wurden, nicht erkannt werden. Sie können also ein WCF-Projekt erstellen, dann mit dem externen svcutil-Tool Ihren Client erstellen und dann alle Änderungen in überprüfen. TFS wird dies jedoch tun Ignorieren Sie Ihre Client-Änderungen gerne, da sie nicht in VS vorgenommen wurden.
Sie müssen die Kosten zählen: Die erforderliche Version von VS, um die Goodies zu erhalten - Codeüberprüfungen erfordern beispielsweise die Premium Edition, die erheblich teurer ist, wenn Sie VS über MSDN erhalten. Auch der Zugriff auf das System für Nicht-VS-Benutzer ist in Ordnung. Wenn sie jedoch den vollständigen Zugriff anstelle der reduzierten Webansicht wünschen, müssen Sie für sie nach CALs suchen. Die Gesamtkosten von TFS können sehr hoch sein. Sogar der jüngste Forrester-Bericht(von Microsoft in Auftrag gegeben, Sie müssen also ein wenig zwischen den Zeilen lesen) sagt, dass TFS erhebliche Verwaltungsunterstützung erfordert - 2 Berater und 6 Administratoren (die 25% ihrer Zeit verbrachten) mussten TFS für ihre Fallstudie mit 122 Benutzern unterstützen (Dies entspricht einer Anzahl von 4,5 Administratoren über diese 122 Benutzer. Dies ist eine Menge im Vergleich dazu, dass ich nur eine vollständige SVN-Lösung eingerichtet und gewartet habe, während ich gleichzeitig meine tägliche Arbeit erledige.) TFS kann viel Mühe kosten, um so weiterzuarbeiten, wie es die Leute erwarten.
Nach meiner Erfahrung mit TFS2012 (vergessen Sie frühere Versionen, da diese Mist sind) ist dies eine sehr komplizierte Systemverwaltung, insbesondere wenn Sie das vordefinierte Setup verlassen. Wenn Sie beispielsweise MSBuild verwenden, um alles zu erstellen, ist alles in Ordnung. Wenn Sie jedoch beispielsweise eine Menge alter .vdproj-Projekte haben, die von MSBuild nicht mehr unterstützt werden, müssen Sie das riesige xaml-Build-Skript bearbeiten, damit diese Projekte erstellt werden. Nachdem ich mehrere Tage daran gearbeitet hatte, war das Beste, was ich tun konnte, die Lösung neu zu erstellen, indem ich sie an devenv weitergab, und selbst dann war es unmöglich, die Build-Ergebnisse in die Build-Zusammenfassung aufzunehmen. Ähnliche Ergebnisse erzielten andere Teams, die NUnit für ihre Tests verwendeten. Wenn Sie den integrierten MSTest verwenden, funktioniert dies. Ansonsten bist du ziemlich voll.
Als Benutzer finde ich, dass die Integration eher störend ist. Ich bevorzuge TortoiseSVN und mache fast meine gesamte SCM-Arbeit damit (da es ein großartiges Tool ist). Mit TFS erhalten Sie für jede Operation einen neuen Bildschirm in VS. Sie haben also eine neue Registerkarte in Ihrer Umgebung für den Team-Explorer und eine andere für die Builds und eine weitere für jede Build-Zusammenfassung, die Sie anzeigen möchten (und wenn Sie die Details eines Builds anzeigen möchten, haben Sie beispielsweise einen Fehler durch zu viele Links klicken). Ich fand, dass die Anzahl der Dokumente, die ich bei der Verwendung von TFS geöffnet hatte, mehr war als die Quelldateien!
Gleiches gilt für Checkins, bei denen Änderungen vorgenommen werden müssen, die durch Klicken auf mehrere Registerkarten im Bereich "Ausstehende Änderungen" in VS erforderlich sind, um Ihren Checkins ein Arbeitselement und einen Kommentar zuzuweisen. Es ist eine kleine Sache, aber ich fand es ärgerlich, da ich an optimierte Werkzeuge gewöhnt war.
Die Erweiterung des Build-Systems war ein weiterer Bereich, der mir fehlte. Das Hinzufügen neuer Funktionen zum Build ist aufgrund der xaml-Konfiguration schwierig, und das Abrufen der Ergebnisse dieser Funktionen in Ihre Build-Bildschirme ist entweder sehr, sehr schwierig oder unmöglich. Wenn Sie also gerne Dinge wie Codekomplexität oder statische Analyse hinzufügen oder sogar automatisierte Tests über beispielsweise Selen oder Bereitstellungen durchführen möchten, vergessen Sie dies. Es sei denn, Sie verwenden die Microsoft-Tools für diese Aspekte (z. B. fxcop).
Das Aktualisieren des Workflows war ein weiteres Problem - obwohl die Powertoys enorm geholfen haben, war es immer noch umständlich, den Workflow richtig zu machen, und Sie können das Scrum Board immer noch nicht mit den Informationen konfigurieren, die Sie wirklich sehen möchten - wieder erhalten Sie die Standardeinstellungen oder nichts .
Das Zusammenführen war auch schmerzhaft. Ich denke, es gibt einen sehr guten Grund, warum MS Git für TFS übernommen hat (beachten Sie, dass dies nur mit brandneuen TFS-Projekten funktioniert, Sie können nicht von TFS zu Git-Backends konvertieren).
Alles in allem ist es also nicht schlecht, da es funktioniert, aber ich habe festgestellt, dass viele andere Tools viel besser sind. Der Nachteil dieser Tools ist, dass sie nicht vollständig integriert sind, aber meiner Meinung nach ist dies eine Stärke, da Sie die besten Bits auswählen können, die Sie möchten. Mit TFS bekommen Sie so ziemlich das, was jemand anderes von Ihnen erwartet. Wenn Sie feststellen, dass das Fehlersystem in TFS schlecht ist (und ich denke, Sie werden es tun), fällt es Ihnen schwer, zu einem anderen zu wechseln.
TFS sollte zusammen mit anderen großen, fetten Tools für den gesamten Lebenszyklus in Betracht gezogen werden. Die meisten Entwickler hassen solche Dinge, weil sie die Einschränkungen, die diese Tools ihnen auferlegen, nicht mögen.
Ich würde es aber versuchen, die 30-Tage-Testversionen herunterladen und installieren. Denken Sie bei der Bewertung daran, hier und da ein wenig zu ändern. Verwenden Sie es nicht nur zum Einchecken des Quellcodes, sondern zum Einchecken mit einem erforderlichen Workitem und zum Abrufen von Berichten, die auf diesem Workitem basieren. Versuchen Sie, mehreren Workitems ein Einchecken zuzuweisen, und versuchen Sie, Workitems wie verwandt miteinander zu kombinieren. Versuchen Sie, etwas anderes in das Build-System zu integrieren, und erfahren Sie, wie Sie einen täglichen Fortschrittsbericht aus den Berichtsservices herausholen, ein Dokument mit einer Workflow-Anforderung verknüpfen und es durch Fehlerbehebung mit Codierung verfolgen, um es zu erstellen, zu überarbeiten und dann freizugeben. Verzweigen und verschmelzen viel. Wenn Sie all diese Dinge nicht einfach machen können, können Sie sich genauso gut an Git halten. Es macht nicht viel Sinn, TFS zu verwenden, wenn Sie die meisten ALM-Funktionen nicht nutzen.