Diciamo che abbiamo deciso di seguire una strategia di "ramificazione basata sul rilascio", quindi avremo un ramo per ogni versione e possiamo aggiungere aggiornamenti di manutenzione come sotto-rami da quelli.
Importa se noi:
- sviluppare e stabilizzare una nuova versione nel trunk e quindi "salvare" quello stato in un nuovo ramo di rilascio; o
- prima crea quel ramo di rilascio e unisci solo nel tronco quando il ramo è stabile?
Trovo che il primo sia più facile da gestire (meno la fusione necessaria), specialmente quando non ci sviluppiamo contemporaneamente su più versioni future. In circostanze normali lavoreremmo tutti sul trunk e lavoreremo solo sui rami rilasciati se ci sono bug da correggere.
A cosa serve realmente il tronco nell'ultimo approccio? Sembra essere quasi obsoleto, perché potrei creare un ramo di rilascio futuro basato sul più recente ramo rilasciato piuttosto che dal tronco.
Dettagli basati su commento qui sotto :
- Il nostro prodotto è costituito da una piattaforma di base e un numero di moduli in cima; ciascuno è sviluppato e persino distribuito separatamente l'uno dall'altro.
- La maggior parte dei membri del team lavora su molte di queste aree, quindi c'è una parziale sovrapposizione tra le persone.
- Generalmente lavoriamo solo su una versione futura e non su tutte le versioni esistenti. Uno o due potrebbero funzionare su una correzione per una versione esistente per brevi periodi di tempo.
- Il nostro lavoro non è compilato ed è un mix di script di shell Unix, file di configurazione XML, pacchetti SQL e altro - quindi non c'è modo di avere build di pulsanti che possono essere testati . Fatto manualmente, che è un po 'laborioso.
- Un ciclo di rilascio è in genere di mezzo anno o più per la piattaforma di base; spesso 1 mese per i moduli.