マーティンファウラーの小さな調査は、過去のTFSの状態について多くを語っています。「危険」はかなり正しいです。(これは、VSの外部で行われた変更を認識しない方法を参照していると思うので、WCFプロジェクトを作成し、外部のsvcutilツールを使用してクライアントを作成し、すべての変更をチェックインできます。しかし、TFSはクライアントの変更はVS内で行われなかったため、喜んで無視してください)。
あなたはコストを数える必要があります:良いものを手に入れるために必要なVSのバージョン-例えば、コードレビューは、MSDN経由でVSを入手した場合、かなり高価なプレミアム版を必要とします。また、非VSユーザーのシステムへのアクセスは問題ありませんが、削減されたWebビューではなくフルアクセスが必要な場合は、CALを取得する必要があります。TFSの全体的なコストはかなり高くなる可能性があります。最近のForresterレポートでさえ(マイクロソフトから委託されているため、少し間を読む必要があります)TFSには重要な管理サポートが必要です-122ユーザーのケーススタディでは、2人のコンサルタントと6人の管理者(時間の25%を費やした)がTFSをサポートする必要がありました(これらの122人のユーザーに対して4.5人の管理者に対応します...これは、私が完全なSVNソリューションをセットアップして維持している間に、私の毎日の仕事もしているのと比較して、非常に多くなっています)。TFSは、人々が期待するとおりに機能し続けるために多くの労力を費やすことができます。
TFS2012での私の経験では(以前のバージョンは駄目なので忘れてください)、これは、特に事前定義された設定から外れた場合、システム管理が非常に複雑になります。たとえば、MSBuildを使用してすべてをビルドする場合は問題ありません。ただし、MSBuildでサポートされなくなった古い.vdprojプロジェクトが大量にある場合は、巨大なxamlビルドスクリプトを編集して、これらのプロジェクトをビルドする必要があります。これに取り組んだ数日後、私ができる最善のことは、devenvに渡してソリューションを再構築することでしたが、それでも、ビルド結果をビルドサマリーに取得することは不可能でした。テストにNUnitを使用した他のチームでも同様の結果が得られました。組み込みのMSTestを使用すれば、動作します。そうでなければ、あなたはかなり詰め込まれています。
ユーザーとして、私は統合がより厄介であることに気づきます。私はTortoiseSVNを好み、それを介してほとんどすべてのSCM作業を実行します(これは素晴らしいツールであるため)。TFSを使用すると、すべての操作でVS内に新しい画面が表示されます。したがって、環境内にチームエクスプローラ用の新しいタブがあり、ビルド用のタブが1つあります。また、表示したいビルドの概要ごとに別のタブがあります(ビルドの詳細、たとえばエラーを表示したい場合は、クリックしすぎるリンク)。TFSを使用しているときに開いていたドキュメントの数がソースファイルよりも多いことがわかりました。
同じことがチェックインにも当てはまり、変更をコミットするには、VSの[保留中の変更]ペインのいくつかのタブをクリックして、チェックインに作業項目とコメントを割り当てる必要があります。それは小さなことですが、より合理化されたツールに慣れていたので、私はそれが面倒だと感じました。
ビルドシステムの拡張は、もう1つ欠けている領域でした。xaml構成のため、ビルドに新しい機能を追加することは困難であり、それらの機能の結果をビルド画面に取り込むのは非常に難しいか、不可能です。したがって、コードの複雑さや静的分析などの要素を追加したい場合や、セレンやデプロイメントなどを介して自動テストを実行したい場合は、忘れてください。これらの側面にMicrosoftツールを使用している場合を除き(fxcopなど)。
ワークフローの更新はもう1つの問題でした。パワートイズは非常に役立ちましたが、ワークフローを正しく設定するのは依然として厄介であり、実際に表示したい情報でスクラムボードを構成することはできません。繰り返しますが、デフォルトまたは何もありません。 。
マージも苦痛でした。MSがTFSにgitを採用した非常に良い理由があると思います(これは新しいTFSプロジェクトでのみ機能し、TFSからgitバックエンドに変換できないことに注意してください)。
つまり、全体としては機能するのでそれほど悪くはありませんが、他の多くのツールの方がはるかに優れていることがわかりました。これらのツールの欠点は、完全に統合されていないことですが、IMHOは、必要な最良のビットを選択して選択できるという強みです。TFSを使用すると、他の誰かがあなたに望んでいるものをほとんど手に入れることができます。TFSのバグシステムが貧弱であると判断した場合(そうなると思います)、別のシステムに変更するのは難しいでしょう。
TFSは、他の大きくて太いフルライフサイクルツールと一緒に検討する必要があります。ほとんどの開発者は、これらのツールが最終的に課す制限を嫌うので、そのようなことを嫌います。
でも試してみて、30日間の試用版をダウンロードしてインストールします。評価するときは、あちこちを少し変更することを忘れないでください。ソースコードのチェックインに使用するだけでなく、必要な作業項目でチェックインして、その作業項目に基づいたレポートを取得してください。複数の作業項目にチェックインを割り当てて、関連する作業項目を組み合わせてみてください。ビルドシステムに別のものを組み込み、レポートサービスから毎日の進捗レポートを取得する方法を確認し、ドキュメントをワークフロー要件にリンクし、バグのトリアージを介してビルドし、ビルドしてやり直してからリリースするようにコーディングします。分岐してたくさんマージします。これらすべてを簡単に行うことができない場合は、gitを使用することもできます。ALMの機能のほとんどを利用しない場合、TFSを使用する意味はあまりありません。