Se lavoriamo con un solo ramo in Subversion, dovremmo anche preoccuparci? Non possiamo semplicemente lavorare sul bagagliaio per accelerare le cose?
Ecco come sviluppiamo con Subversion:
- C'è un baule
- Facciamo un nuovo ramo di sviluppo
- Sviluppiamo una nuova funzionalità su quel ramo
- Al termine, la funzionalità viene unita nel trunk, il ramo viene rimosso e un nuovo ramo di sviluppo viene creato dal trunk
Quando vogliamo rilasciare alla produzione, creiamo un tag dal tronco. Le correzioni di bug sono fatte su un ramo da quel tag. Questo bugfix viene quindi unito nel trunk.
Questo è il motivo per cui creiamo un nuovo ramo di sviluppo dopo aver completato una funzione. In questo modo, la correzione dei bug è inclusa abbastanza presto nel nostro nuovo codice.
Di seguito è riportato un diagramma che dovrebbe chiarire:
Ora, si ha la sensazione che questo non sia il modo più efficiente di lavorare. Costruiamo localmente prima di impegnarci, il che richiede circa 5-10 minuti. Puoi capire che questo è vissuto come un tempo di attesa piuttosto lungo.
L'idea di un ramo di sviluppo è che il trunk sia sempre pronto per il rilascio. Ma questo non è più vero nella nostra situazione. A volte, una funzionalità è quasi pronta e alcuni sviluppatori inizieranno già a codificare la funzione successiva (altrimenti rimarrebbero in attesa che uno o due sviluppatori finiscano e si uniscano).
Quindi, quando la funzione 1 è terminata, viene unita nel trunk, ma con alcuni commit della funzione 2 inclusa.
Quindi, dovremmo anche preoccuparci del ramo di sviluppo, dato che abbiamo un solo ramo? Ho letto dello sviluppo basato sul tronco e del ramo per astrazione, ma la maggior parte degli articoli che ho trovato focalizzati sulla parte ramo per astrazione. Ho l'impressione che sia per grandi cambiamenti che si estenderanno su diverse versioni. Questo non è un problema che stiamo riscontrando.
Cosa ne pensi? Possiamo solo lavorare sul bagagliaio? Lo scenario peggiore è (penso) che dovremmo creare un tag dal trunk e selezionare i commit di cui abbiamo bisogno, perché alcuni commit / funzionalità non sono ancora pronti per la produzione.