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. Ripetutamente durante il corso del progetto abbiamo avuto il codice sorgente da un ramo, cioè v1 che entra nelle filiali di patch e manutenzione per le versioni precedenti del software, vale a dire v2.
Ciò si traduce nel tempo impiegato per il backup del commit sbagliato o nel codice errato (possibilmente non-QAd) che raggiunge e viene distribuito nel ramo sbagliato se non si nota che il codice è entrato nel ramo sbagliato.
Il nostro branch e fusione design / method
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 release, finché non sarà considerato ready , lo dirammo per un singolo test / UAT / ramo di produzione, dove vengono eseguiti tutti i rilasci e la manutenzione. I tag sono usati per costruire versioni di questo ramo. Mentre v1 è in fase di test, sarà creato un ramo per la v2 e gli sviluppatori inizieranno a lavorare sulle nuove funzionalità.
Ciò che tende ad accadere è che uno sviluppatore si impegna a lavorare per il 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 senior 'cura' il ramo -prod.
Va notato che mentre la v2 ha appena iniziato lo sviluppo, potrebbero ancora esserci alcune patch abbastanza pesanti che entrano nella v1 per risolvere i problemi. Cioè v1 potrebbe non ricevere solo la piccola patch dispari.
Ciò che abbiamo provato finora
- Avere un ramo -prod separato, con gatekeeper. Un ramo -prod dovrebbe sollevare avvertimenti attraverso il suo nome e la maggior parte degli sviluppatori non ha bisogno di essere mai in quel ramo. Questo non ha davvero ridotto il problema.
- Sensibilizzata a 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 nel ramo sbagliato
- Design troppo complesso di un ramo
- Avere uno sviluppo attivo in più rami in parallelo. (Il progetto presenta sintomi di utilizzo del modello di valanga .)
- Gli sviluppatori non capiscono abbastanza bene il DVCS
Domande che ho letto che erano piuttosto pertinenti
Ho letto questa domanda su non impegnarsi nella parte sbagliata e sento che le risposte riguardanti i segnali visivi possono essere utili. Tuttavia non sono del tutto convinto che i problemi che stiamo vivendo non siano i sintomi di un problema più fondamentale.
Con gli indizi visivi, possiamo incorporarli facilmente nella riga di comando, tuttavia circa metà del team usa eclipse che non sono sicuro di come incorporare segnali visivi.
Domanda
Quali metodi, sotto forma di software, gestione dei progetti o governance, possiamo utilizzare per ridurre (idealmente fermarsi) i commit alla filiale sbagliata occupandoci del nostro tempo o danneggiando il nostro codice implementato?
Sarebbe gradito un commento specifico sui motivi che ritengo possano contribuire come sopra descritto, ma ciò non dovrebbe limitare la tua risposta.