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?