TFS? Corri per le colline! Allontanati il più velocemente possibile. Fa molte cose diverse, ma nessuna delle quali è valida come il migliore degli strumenti disponibili.
Ma sul serio:
Una volta che hai un discreto sistema di controllo della versione (SVN, GIT, ecc.) Ti consiglio di impostare regole per la gestione delle filiali, ad esempio quando creare filiali, per cosa, quando unire, chi e molto altro.
Fino a poco tempo fa abbiamo usato un singolo ramo per il nuovo sviluppo ("trunk"). Per una versione creeremmo un ramo fuori dal tronco. Il QA finale verrebbe fatto in quel ramo e una volta completato rilasceremo (siamo su rilasci mensili).
Siamo passati al concetto di "nessuna spazzatura nel bagagliaio" per ridurre il rischio di pianificazione. Questo concetto contiene fondamentalmente una regola in base alla quale creare rami per il lavoro di sviluppo separati dal tronco. Ad esempio, potresti avere un ramo separato per una funzionalità, per un piccolo team di sviluppo o simili. Usiamo 'epiche' per descrivere una piccola funzione o parte rilasciabile di una funzione e creare un ramo per ogni epica. Almeno una volta al giorno tutti i cambiamenti dal tronco vengono uniti nel ramo epico. La chiave è un buon supporto per l'unione tramite controllo della versione o uno strumento separato (ad es. Unione a tre vie). Il QA per l'epopea verrebbe fatto sul ramo epico. Una volta superato, il ramo epico verrebbe unito nel trunk e verrà eseguito un test di integrazione. Abbiamo ancora filiali per le versioni.
Con i rami epici abbiamo sostanzialmente ridotto il rischio del programma in quanto ora siamo in grado di liberarci dal tronco e includere tutti gli epici che sono stati fusi con successo nel tronco. Le epiche che non sono complete mancano del bus e faranno la prossima uscita (il prossimo mese).
Questo ovviamente può funzionare solo nel nostro ambiente. Molto probabilmente avrai fattori diversi dai nostri che influenzeranno le scelte migliori per la gestione delle filiali.
Ad esempio, se si dispone di un team con molte persone che lavorano in remoto e non sono sempre connesse al server di controllo versione, si desidera utilizzare un sistema di controllo versione che supporti un modello distribuito. GIT e alcuni altri rientrerebbero in questa categoria. Per quanto ne so, TFS richiede una connessione al server per rendere i file scrivibili (risolti nella versione 2010?).
Spero di essere riuscito a dimostrare che non esiste "una taglia unica". Inizia con i tuoi processi in particolare la gestione delle filiali, determina i requisiti e infine seleziona lo strumento più adatto alle tue esigenze. Forse è TFS, forse no.