TFS? Беги за холмы! Двигайся как можно быстрее. Он делает много разных вещей, но ни одна из них не так хороша, как доступные лучшие инструменты породы.
Но серьезно:
Если у вас есть приличная система контроля версий (SVN, GIT и т. Д.), Я бы порекомендовал установить правила для управления филиалами, например, когда создавать филиалы, для чего, когда объединять, кого и многое другое.
До недавнего времени мы использовали одну ветку для новой разработки («ствол»). Для релиза мы бы создали ветку от ствола. Окончательный контроль качества будет выполнен в этой ветке, и после его завершения мы выпустим (мы находимся в ежемесячных выпусках).
Мы перешли на концепцию «нет мусора в багажнике», чтобы уменьшить риск графика. Эта концепция в основном содержит правило, по которому вы будете создавать ветви для работы разработки отдельно от ствола. Например, у вас может быть отдельная ветка для функции, для небольшой команды разработчиков или аналогичной. Мы используем «эпосы», чтобы описать небольшую функцию или выпускаемую часть функции и создать ветку для каждой эпопеи. По крайней мере, один раз в день все изменения из ствола сливаются в эпическую ветвь. Ключ - хорошая поддержка слияния с помощью контроля версий или отдельного инструмента (например, трехстороннее слияние). QA для эпоса будет сделан на эпической ветке. После прохождения эпическая ветвь будет объединена в транк и будет проведен интеграционный тест. У нас еще есть ветки для релизов.
Благодаря эпическим ветвям мы существенно снизили риск графика, поскольку теперь мы можем освободить из ствола и включить все эпики, которые были успешно объединены в ствол. Эпопеи, которые не завершены, пропустят автобус и выпустят следующий релиз (в следующем месяце).
Это, конечно, может работать только в нашей среде. Скорее всего, у вас будут факторы, отличные от наших, которые будут влиять на то, что лучше всего подходит для управления филиалами.
Например, если у вас есть команда, в которой много людей работают удаленно и не всегда подключены к серверу управления версиями, вам следует использовать систему управления версиями, которая поддерживает распределенную модель. GIT и некоторые другие попадают в эту категорию. Насколько мне известно, TFS требует подключения к серверу, чтобы сделать файлы доступными для записи (исправлено в версии 2010?).
Надеюсь, мне удалось показать, что не существует «одного размера для всех». Начните с ваших процессов, в частности управления филиалом, определите требования и, наконец, выберите инструмент, который лучше всего соответствует вашим потребностям. Может быть, это TFS, а может и нет.