Modo pratico per eseguire il commit delle modifiche nel controllo del codice sorgente su più rami

StackOverflow https://stackoverflow.com/questions/404948

Domanda

Uno scenario comune quando si utilizza il controllo del codice sorgente è avere un ramo di sviluppo insieme ai rami di versione con versione. Utilizziamo CVS, con HEAD come ramo di sviluppo e un ramo denominato ad es. release-6-2 per l'attuale versione di un prodotto.

Lo sviluppo di nuove funzionalità va solo nel ramo di sviluppo, ma a volte le correzioni di bug devono essere verificate sia nel ramo di sviluppo che nel ramo di rilascio corrente. A volte questo può diventare abbastanza noioso, quindi sto cercando modi pratici per farlo.

Quando un file da sottoporre a commit è sincronizzato sui due rami, in particolare cerco un rapido "impegno per questi rami" soluzione.

(Usiamo CVS come nostro sistema di controllo del codice sorgente, quindi qualsiasi risposta specifica al CVS è buona. Tuttavia, è anche interessante vedere se altri sistemi di controllo del codice sorgente possono offrire un modo migliore.  Sul lato client utilizziamo Eclipse, quindi le soluzioni Eclipse sono buone. Ma se hai una soluzione non Eclipse, va bene lo stesso.)

È stato utile?

Soluzione

Applica la tua correzione al ramo di rilascio più vecchio richiesto. Quindi unisci la modifica al ramo di rilascio successivo e così via fino a quando non unisci dall'ultimo ramo di rilascio a HEAD.

Supponi che la versione più vecchia del tuo prodotto sia 1.0 e che tu abbia anche versioni 1.1 e 1.5. Nuove funzioni per la prossima versione vengono aggiunte a HEAD. Se viene trovato un bug in 1.0, si applica la correzione al ramo 1.0. Unisci da 1.0 al ramo 1.1. Unisci da 1.1 al ramo 1.5 e infine unisci dal ramo 1.5 a HEAD.

L'unione da un ramo all'altro è meglio che applicare la correzione manualmente a ciascun ramo.

Con CVS devi tenere traccia manualmente delle versioni unite, in modo da non includere le stesse revisioni quando esegui la tua prossima unione.

Se si cambia per usare Subversion, l'unione da un ramo all'altro è più semplice. Lo strumento di sovversione di Eclipse terrà traccia di quali revisioni hai precedentemente unito, semplificando notevolmente il compito di eseguire ripetute fusioni tra due rami.

Passare a Subversion da CVS è facile (ish). Non sarai il primo ad aver fatto una simile mossa.

Altri suggerimenti

Come ha detto Awals, è meglio unirsi tra i rami. Per scegliere una fusione, il metodo descritto in Controllo pragmatico della versione usare CVS è molto buono:

Nel ramo: tag ( PRE_FOO ) prima della modifica, apporta le modifiche e esegui il commit, tag dopo la modifica ( POST_FOO ). Quindi, nel trunk, unisci utilizzando i tag:

cvs up -j PRE_FOO -j POST_FOO

La fusione tra filiali è molto più semplice e sicura in SVN, ed è banale convertire la tua intera storia CVS in SVN - vedi cvs2svn . È necessario utilizzare SVN 1.5 o, con versioni SVN precedenti, svnmerge .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top