Siamo un piccolo negozio ISV e di solito spediamo una nuova versione dei nostri prodotti ogni mese. Usiamo Subversion come nostro 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 trunk principale.
Ecco come facciamo oggi:
- Rilasciare la 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 fase di sviluppo pesante e non è abbastanza stabile da essere rilasciato urgentemente.
In tal caso, facciamo quanto segue:
- Crea un ramo dal tag che abbiamo creato nel passaggio (1)
- Correzione di bug
- Prova e rilascia
- Riporta la modifica al tronco principale (se applicabile)
Il nostro problema più grande è quello di unire questi due (ramo con principale). Nella maggior parte dei casi non possiamo fare affidamento sulla fusione automatica, ad esempio:
- sono state apportate molte modifiche tronco principale
- unione di file complessi (come i file XML di Visual Studio ecc.) non funziona molto bene
- un altro lo sviluppatore / team ha apportato delle modifiche non capisco e tu non puoi uniscilo
Quindi quello che pensi sia la migliore pratica per mantenere sincronizzate queste due versioni (branch e main). Che cosa fai?