Di recente mi sono imbattuto in un articolo di MSDN su ramificazione e fusione e SCM: Branching and Merging Primer - Chris Birmele .
Nell'articolo dicono che 'big bang merge' è un antipasto che si fonde:
Big Bang Merge - differire la fusione dei rami fino alla fine dello sforzo di sviluppo e tentare di unire tutti i rami contemporaneamente.
Mi sono reso conto che questo è molto simile a quello che la mia azienda sta facendo con tutti i rami di sviluppo che vengono prodotti.
Lavoro in una società molto piccola con una persona che funge da revisione finale + autorità di fusione del tronco. Abbiamo 5 sviluppatori (incluso me), a ciascuno di noi verrà assegnato un compito / bug / progetto separato e ciascuno di essi si staccherà dal tronco corrente (sovversione) e quindi eseguirà il lavoro di sviluppo nel nostro ramo, testerà i risultati, scriverà la documentazione se necessario, esegui una revisione tra pari e un ciclo di feedback con gli altri sviluppatori, quindi invia la filiale per la revisione + unione sul nostro software di gestione del progetto.
Il mio capo, l'unica autorità sul repository di trunk, rimanderà effettivamente tutte le recensioni delle filiali fino a un solo momento in cui eseguirà le recensioni il più possibile, alcuni rami verranno respinti per miglioramenti / correzioni, alcuni i rami si uniranno nel tronco, alcuni rami verranno rigettati a causa di conflitti, ecc.
Non è insolito per noi avere 10-20 filiali attive nella coda di revisione finale da unire in trunk.
Inoltre, spesso dobbiamo risolvere i conflitti nella fase finale di revisione e unione perché due rami sono stati creati dallo stesso trunk ma hanno modificato lo stesso pezzo di codice. Di solito lo evitiamo semplicemente rinominando il tronco e riapplicando le nostre modifiche e risolvendo i conflitti, quindi sottoponendo il nuovo ramo per la revisione (rebase dei poveri).
Alcune domande dirette che ho sono:
- Stiamo esibendo lo stesso anti-pattern che è stato descritto come la "fusione del big bang"?
- Alcuni dei problemi che stiamo riscontrando sono il risultato di questo processo di unione?
- Come possiamo migliorare questo processo di unione senza aumentare il collo di bottiglia sul mio capo?
Modifica: dubito che il mio capo allenterà la sua presa sul repository del trunk o consentirà ad altri sviluppatori di unirsi al trunk. Non sono sicuro di quali siano le sue ragioni, ma non ho davvero intenzione di sollevare l'argomento perché è stato sollevato prima e abbattuto piuttosto rapidamente. Penso che non si fidino di noi, il che non ha senso perché tutto è tracciato comunque.
Qualsiasi altra intuizione di questa situazione sarebbe apprezzata.