Il problema
Sono su un progetto software che ha circa 10 sviluppatori, condividiamo il codice sorgente tramite Mercurial. Abbiamo un ramo di sviluppo e produzione per versione. Nel corso del progetto abbiamo ripetutamente avuto il codice sorgente di un ramo, cioè v1, che entrava nei rami patch e manutenzione per le versioni precedenti del software, cioè v2.
Ciò comporta sia il tempo impiegato per il backup del commit errato, sia il codice errato (possibilmente non-QAd) che raggiunge e viene distribuito nel ramo sbagliato se non notiamo che il codice è andato nel ramo sbagliato.
La nostra filiale e uniamo il design / metodo
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
Quindi lavoreremo su un ramo di sviluppo delle versioni , fino a quando non sarà ritenuto pronto , diramandolo per un singolo ramo testing / UAT / Produzione, dove vengono eseguite tutte le versioni e la manutenzione. I tag vengono utilizzati per creare versioni di questo ramo. Mentre v1 è in fase di test, sarà stato creato un ramo per v2 e gli sviluppatori inizieranno a lavorare su nuove funzionalità.
Ciò che tende a succedere è che uno sviluppatore commette lavoro a causa del ramo v2-dev in v1-dev o v1-prod, o peggio, uniscono v2-dev in v1-prod (o simili errori simili).
Diciamo alla maggior parte degli sviluppatori di non accedere ai rami -prod , tuttavia il codice si insinua ancora. Un gruppo di sviluppatori più anziani si occupa del ramo -prod.
Va notato che mentre v2 ha appena iniziato lo sviluppo, potrebbero esserci ancora alcune patch piuttosto pesanti che vanno in v1 per risolvere i problemi. Vale a dire v1 potrebbe non essere solo ottenere la piccola patch dispari.
Quello che abbiamo provato finora
- Avere un ramo di prodotto separato, con gatekeeper. Un ramo -prod dovrebbe generare avvisi attraverso il suo nome e la maggior parte degli sviluppatori non deve mai trovarsi in quel ramo. Questo non ha davvero ridotto il problema.
- Aumentare la consapevolezza di questo problema tra gli sviluppatori, per cercare di renderli più vigili. Ancora una volta questo non ha avuto molto successo.
Possibili ragioni che vedo per gli sviluppatori che si impegnano nella filiale sbagliata
- Un design del ramo troppo complesso
- Avere sviluppo attivo in più rami in parallelo. (Il progetto mostra i sintomi dell'uso del modello valanghe .)
- Gli sviluppatori non comprendono abbastanza bene il DVCS
Domande che ho letto che erano in qualche modo pertinenti
Ho letto questa domanda sul non impegnarmi nel ramo sbagliato e sento che le risposte relative agli indizi visivi potrebbero essere utili. Tuttavia non sono del tutto convinto che i problemi che stiamo vivendo non siano sintomi di un problema più fondamentale.
Con gli indizi visivi, possiamo incorporarli facilmente nella riga di comando, tuttavia circa la metà del team usa eclissi che non sono sicuro di come integrare gli indizi visivi.
Domanda
Quali metodi, sotto forma di software, gestione del progetto o governance, possiamo usare per ridurre (fermare idealmente) gli impegni con il ramo sbagliato che richiede tempo o sporca il nostro codice distribuito?
Un commento specifico sui motivi che ritengo possano contribuire, come indicato sopra, sarebbe apprezzato, ma ciò non dovrebbe limitare la tua risposta.