TFS? Corra para as colinas! Saia o mais rápido possível. Ele faz muitas coisas diferentes, mas nenhuma delas é tão boa quanto as melhores ferramentas disponíveis.
Mas seriamente:
Depois de ter um sistema de controle de versão decente (SVN, GIT, etc.), recomendo configurar regras para o gerenciamento de filiais, por exemplo, quando criar filiais, para o que, quando mesclar, quem e muito mais.
Até recentemente, usamos um único ramo para o novo desenvolvimento ('tronco'). Para uma versão, criaríamos uma ramificação fora do tronco. O controle de qualidade final seria feito nesse ramo e, uma vez concluído, lançaríamos (estamos em lançamentos mensais).
Mudamos para o conceito de 'sem lixo no porta-malas' para reduzir o risco do cronograma. Esse conceito basicamente contém uma regra pela qual você criaria ramificações para o trabalho de desenvolvimento separado do tronco. Por exemplo, você pode ter uma ramificação separada para um recurso, para uma pequena equipe de desenvolvimento ou similar. Usamos 'épicos' para descrever um pequeno recurso ou parte liberável de um recurso e criar uma ramificação para cada épico. Pelo menos uma vez por dia, todas as alterações do tronco são mescladas no ramo épico. A chave é um bom suporte de mesclagem pelo controle de versão ou uma ferramenta separada (por exemplo, mesclagem de três vias). O controle de qualidade da epopéia seria realizado no ramo da epopéia. Uma vez aprovada, a ramificação épica seria mesclada no tronco e um teste de integração seria executado. Ainda temos ramificações para lançamentos.
Com as ramificações épicas, reduzimos substancialmente o risco do cronograma, pois agora estamos em posição de liberar o tronco e incluir todos os épicos que foram mesclados com sucesso no tronco. Épicas que não estão completas perdem o ônibus e farão o próximo lançamento (mês que vem).
Obviamente, isso pode funcionar apenas em nosso ambiente. Muito provavelmente você terá fatores diferentes dos nossos que influenciarão quais são as melhores escolhas para o gerenciamento de filiais.
Por exemplo, se você tem uma equipe com muitas pessoas trabalhando remotamente e nem sempre está conectada ao servidor de controle de versão, convém usar um sistema de controle de versão que suporte um modelo distribuído. O GIT e alguns outros se enquadram nessa categoria. O TFS, tanto quanto sei, requer uma conexão com o servidor para tornar os arquivos graváveis (corrigido na versão 2010?).
Espero ter conseguido mostrar que não existe "tamanho único". Comece com seus processos, em particular no gerenciamento de filiais, determine os requisitos e, finalmente, selecione a ferramenta que melhor corresponde às suas necessidades. Talvez seja TFS, talvez não.