Sto usando git per un progetto iOS, e finora ho il seguente modello di ramo:
feature_brach(usually multiple) -> development -> testing -> master
I branch di caratteristiche hanno vita breve, sono usati solo per aggiungere una funzionalità o un bug, quindi uniti nuovamente allo sviluppo e cancellati. Lo sviluppo è abbastanza stabile, ma non è pronto per la produzione.
Il test è quando abbiamo una versione stabile con funzionalità sufficienti per un nuovo aggiornamento e spediamo ai beta tester. Una volta terminato il test, può essere spostato nello sviluppo o avanzato nel master.
Il problema, tuttavia, sta nel fatto che non possiamo schierare istantaneamente. Su iOS, possono trascorrere diverse settimane tra il momento in cui una build viene rilasciata e quando colpisce effettivamente gli utenti. Voglio sempre avere una versione del codice che è attualmente sul mercato nel mio repository, ma devo anche avere un posto dove mantenere il codice stabile corrente da inviare per il rilascio.
Quindi:
- dove dovrei mantenere il codice stabile
- dove dovrei conservare il codice attualmente sul mercato
- e dove dovrei conservare il codice che è in revisione con Apple e sarà (si spera) messo presto sul mercato?
Inoltre, questo è un team di sviluppatori, quindi la collaborazione non è del tutto necessaria, ma è preferibile perché potrebbero esserci più membri in futuro.