Nella mia (piccola) azienda, stiamo attualmente pensando di scaricare il nostro attuale sistema di versioning (svn) e le procedure di rilascio, che sono crap TBH, e passare a git. Sarà usato principalmente per un grande progetto web che svilupperemo costantemente per alcuni anni, almeno. Considerando ciò che ho trovato sul Web e alcune domande qui su Programmers.SE, ho trovato il seguente flusso di lavoro (basato sul flusso di lavoro gitflow):
Abbiamo tre server Web chiamati live
, webtest
e webdev
e tre rami principali, master
, testing
(derivato da master
) e development
(derivato da testing
). Il codice in master
sarà sempre esattamente quello distribuito nel sistema live (produzione) e il codice in testing
sarà sempre esattamente quello distribuito sul server webtest
. Il server webdev
, tuttavia, sarà continuamente utilizzato dagli sviluppatori per caricare il loro codice, quindi non corrisponde necessariamente al ramo development
.
Ogni volta che uno sviluppatore inizia a lavorare su una nuova funzione, crea un ramo di funzionalità da development
, lavora su di esso (e frequentemente carica il suo attuale progresso su webdev
), si impegna a development
di volta in volta, e ogni volta che pensa di averlo fatto, ricomprime il suo ramo di funzionalità in development
(1).
Ogni volta che un gruppo di funzionalità è pronto (ed eventualmente rivisto da altri sviluppatori), uniamo development
in testing
(e questo codice è distribuito su webtest
), quindi può essere testato (2). Quando il test è terminato e tutto sembra a posto, uniamo testing
di nuovo in master
(3) e il codice in master
è distribuito sul server di produzione live
.
Ho alcune domande al riguardo: nei punti (1), (2) e (3), avrebbe senso creare richieste di pull piuttosto che una semplice fusione? Come potremmo affrontare gli errori trovati in testing
- creando rami fuori testing
o correggendoli nel rispettivo ramo di funzione e quindi fondendoli in development
e testing
? Ci sono altri importanti svantaggi o avvertimenti che ho trascurato? Avete altri miglioramenti o suggerimenti?