Siamo un piccolo negozio ISV e di solito spediamo una nuova versione dei nostri prodotti ogni mese. Usiamo Subversion come repository di codice e Visual Studio 2010 come nostro IDE. Sono consapevole che molte persone stanno sostenendo Mercurial e altri sistemi di controllo della sorgente distribuita, ma a questo punto non vedo come potremmo trarne vantaggio, ma potrei sbagliarmi.
Il nostro problema principale è come mantenere sincronizzati i rami e il tronco principale.
Ecco come facciamo le cose oggi:
- Rilascia nuova versione (crea automaticamente un tag in Subversion)
- Continua a lavorare sul trunk principale che verrà rilasciato il mese prossimo
E il ciclo si ripete ogni mese e funziona perfettamente. Il problema sorge quando è necessario rilasciare una versione di servizio urgente. Non possiamo rilasciarlo dal trunk principale (2) poiché è in forte sviluppo e non è abbastanza stabile per essere rilasciato con urgenza.
In tal caso, facciamo quanto segue:
- Crea un ramo dal tag che abbiamo creato nel passaggio (1)
- Risoluzione del problema
- Test e rilascio
- Riporta la modifica al trunk principale (se applicabile)
Il nostro problema più grande è la fusione di questi due (filiale con principale). Nella maggior parte dei casi non possiamo fare affidamento sulla fusione automatica perché ad esempio:
- sono state apportate molte modifiche al trunk principale
- l'unione di file complessi (come file XML di Visual Studio ecc.) non funziona molto bene
- un altro sviluppatore / team ha apportato modifiche che non capisci e non puoi semplicemente unirle
Quindi quello che pensi sia la migliore pratica per mantenere sincronizzate queste due diverse versioni (branch e main). cosa fai?