Il mio dipartimento sta pianificando di lavorare simultaneamente alle prossime uscite (che coprono un anno). I poteri che stiamo sostenendo supportano questo rifattorizzando tutto il codice interessato in classi come AbstractGizmo, R1Gizmo, R2Gizmo, ecc e usano la configurazione (tramite Spring e / o ANT) per controllare quali classi sono usate in una particolare release. Apparentemente questo è per salvarci il lavoro di unire le modifiche in più rami, specialmente quando le modifiche sono nel codice comune. Tuttavia, vedo questo come un caso chiaro per la ramificazione e l'unione nel controllo di versione (TFS, nel nostro caso).
Tuttavia, ho pochissima esperienza in progetti che hanno flussi di sviluppo attivi come questo. Sono sicuro che altri hanno (come Microsoft, con Windows XP, Vista e 7). Qual è il modo migliore per gestire più "stream" simultanei di sviluppo nel controllo della versione? Ti diramano e unisci le modifiche nel controllo delle versioni, provi a sviluppare tutto in un ramo e usi la configurazione o gli script di compilazione per assemblare la versione diversa o qualcos'altro?
P.S. Al momento utilizziamo TFS, ma la nostra strategia di controllo della versione potrebbe non essere vincolata da essa. Un mio collega sta spingendo per passare a Git o Mercurial, e sembra che stia ottenendo un po 'di trazione.