Riguarda il contesto: ogni quanto tempo rilasci e cosa c'è in una versione.
Ecco un po 'di case study che ho avuto con il mio vecchio lavoro, utilizzando il metodo B (l'abbiamo chiamato branch by purpose ).
Per mettere la storia in un contesto,
-
Una versione consisteva in nuove funzionalità nel nostro software: nuove modalità di gioco, nuove funzionalità, nuove opzioni di configurazione.
-
Il ciclo di rilascio è stato piuttosto lungo: i nostri clienti erano università che si sarebbero limitate a un set di funzionalità solitamente per un anno.
Lo sviluppo principale è stato effettuato nel bagagliaio fino a quando non abbiamo raggiunto lo stato di completamento di una determinata release. A quel punto creeremo un ramo, diciamo projectname-january2012 e eseguiremo test di qualità e correzioni di bug in quel ramo. Una volta che eravamo pronti per una versione pubblica, dovremmo codificare il codice in quel ramo e rilasciare.
Tuttavia, lo sviluppo della versione non si è concluso con quel tag. Inevitabilmente, abbiamo avuto clienti che hanno trovato bug o piccoli problemi con il rilascio. In tal caso, tutto ciò che dobbiamo fare è tornare a quel ramo, applicare patch al codice e creare una nuova versione taggata del ramo january2012 da rilasciare, e unire le correzioni al tronco .
Nel nostro caso, questo approccio era favorevole perché alcuni utenti preferivano rimanere con versioni precedenti con una serie limitata di funzionalità, o semplicemente perché il costo di distribuire sull'infrastruttura una nuova versione piuttosto che una correzione causava alcuni problemi.
Quindi le domande che devi porsi sono:
- Quanto spesso rilascio?
- Le mie versioni saranno compatibili al 100% con versioni precedenti?
- I miei clienti staranno bene aggiornando completamente per correggere i bug?
Se rilasci spesso, allora forse non vale la pena avere rami per ognuno di essi. Tuttavia, se il tuo ciclo di rilascio è abbastanza lungo come il mio vecchio caso d'uso, e tale implementazione, compatibilità con le versioni precedenti e client aggrappati a vecchie versioni potrebbero essere rischi, l'opzione B ti farà sicuramente risparmiare molto rendere le cose molto più semplici per supportare i tuoi clienti al minimo costo di gestire il disordine dei rami.