Небольшой опрос Мартина Фаулера много говорит о состоянии TFS в предыдущие годы. «опасно» совершенно верно. (Я думаю, это относится к тому, что он не распознает изменения, сделанные вне VS, поэтому вы можете создать проект WCF, затем использовать внешний инструмент svcutil для создания вашего клиента, а затем проверить все ваши изменения в ..., но TFS будет счастливо игнорировать изменения вашего клиента, потому что они не были сделаны внутри VS).
Вы должны посчитать стоимость: необходимая версия VS для получения положительных героев - например, для проверки кода требуется Premium Edition, которая значительно дороже, если вы получаете VS через MSDN. Кроме того, доступ к системе для пользователей не-VS - это хорошо, но если они хотят получить полный доступ вместо сокращенного веб-представления, вам придется выложить для них клиентские лицензии. Общая стоимость TFS может быть довольно большой. Даже недавний отчет Forrester(по заказу Microsoft, поэтому вам нужно немного прочитать между строк) говорит, что TFS требует значительной административной поддержки - 2 консультанта и 6 администраторов (которые потратили 25% своего времени) были обязаны поддерживать TFS для их тематического исследования 122 пользователей (работает с 4,5 администраторами для этих 122 пользователей ... это много по сравнению с тем, что я настраиваю и поддерживаю полноценное решение SVN, а также выполняю свою повседневную работу). TFS может занять много усилий, чтобы продолжать работать так, как ожидают люди.
По моему опыту работы с TFS2012 (не обращайте внимания на предыдущие версии, потому что это дерьмо), это очень сложное системное администрирование, особенно если вы выходите за пределы предварительно заданной настройки. Например, если вы используете MSBuild для сборки всего, все в порядке. Но если, скажем, у вас есть загрузка старых проектов .vdproj, которые больше не поддерживаются MSBuild, вам нужно отредактировать огромный скрипт сборки xaml, чтобы он создавал эти проекты. После нескольких дней работы над этим лучшее, что я мог сделать, - это перестроить решение, передав его в devenv, и даже тогда было невозможно получить результаты сборки в сводке сборки. Аналогичные результаты были получены другими командами, которые использовали NUnit для своих тестов - если вы используете встроенный MSTest, то он работает. В противном случае, вы в значительной степени чучела.
Как пользователь, я считаю, что интеграция - это скорее неприятность. Я предпочитаю TortoiseSVN, и я делаю почти всю свою работу с SCM через нее (так как это потрясающий инструмент). С TFS вы получаете новый экран внутри VS для каждой операции. Таким образом, у вас есть новая вкладка в вашей среде для обозревателя команды, и еще одна для сборок, и еще одна для каждой сводки сборок, которую вы хотите увидеть (и если вы хотите увидеть детали сборки, например, ошибка, у вас есть нажать слишком много ссылок). Я обнаружил, что количество документов, которые я открыл при использовании TFS, было больше, чем исходные файлы!
То же самое относится и к проверкам, для внесения изменений требуется перебрать несколько вкладок на панели «Ожидающие изменения» в VS, чтобы назначить рабочий элемент и оставить комментарий для ваших проверок. Это небольшая вещь, но я нашел это раздражающим, поскольку я привык к более обтекаемым инструментам.
Расширение системы сборки было еще одной областью, которой мне не хватало. Добавление новых функций в сборку затруднено из-за конфигурации xaml, и получение результатов этих функций на экранах сборки либо очень, либо очень сложно, или невозможно. Поэтому, если вам нравится добавлять такие вещи, как сложность кода или статический анализ, или даже автоматическое тестирование с помощью, скажем, selenium или развертываний ... забудьте об этом. Если только вы не используете инструменты Microsoft для этих аспектов (например, fxcop).
Обновление рабочего процесса было еще одним препятствием - хотя powertoys очень помогли, было все еще неловко правильно настроить рабочий процесс, и вы все еще не можете настроить доску Scrum на информацию, которую вы действительно хотите видеть - опять же, вы получаете значения по умолчанию или ничего ,
Объединение также было болезненным, я думаю, что есть очень веская причина, по которой MS приняла git для TFS (обратите внимание, что это работает только с новыми проектами TFS, вы не можете конвертировать из TFS в git backends).
В общем, все не так плохо, как работает, но я обнаружил, что многие другие инструменты намного лучше. Недостатком этих инструментов является то, что они не полностью интегрированы, но, по-моему, это является сильной стороной, так как вы можете выбирать лучшие биты, которые вы хотите. С TFS вы получаете в значительной степени то, что кто-то еще хочет от вас. Если вы решите, что система ошибок в TFS оставляет желать лучшего (и я думаю, что так и будет), вам будет сложно перейти на другую.
TFS следует рассматривать вместе с другими большими, полными инструментами полного жизненного цикла. Большинство разработчиков ненавидят такие вещи, потому что им не нравятся ограничения, которые эти инструменты налагают на них.
Хотя я бы попробовал, скачал 30-дневные пробные версии и установил их. При оценке не забывайте вносить небольшие изменения здесь и там, а не просто использовать их для проверки исходного кода, регистрации с рабочим элементом и получения отчетов на основе этого рабочего элемента. Попробуйте назначить регистрацию нескольким рабочим элементам и попробуйте объединить рабочие элементы как связанные. Попытайтесь включить что-то другое в систему сборки, посмотрите, как получать ежедневные отчеты о ходе работ из служб отчетов, связывать документ с требованием рабочего процесса и прослеживать его посредством сортировки ошибок до кодирования, чтобы построить для доработки, а затем выпустить. Ветви и слияния много. Если вы не можете легко делать все эти вещи, то вы можете придерживаться мерзавца. Нет смысла использовать TFS, если вы не используете большинство его возможностей ALM.