Se si sincronizza sempre un ramo di funzione prima di unirlo nuovamente. Perché devi davvero usare l'opzione --reintegrate
?Quando è veramente necessaria l'opzione di reintegrazione?
Il Subversion libro dice:
Quando si uniscono il vostro ramo di nuovo al tronco, però, la matematica di base è molto diversa. Il tuo ramo di funzionalità è ora una mistura di entrambe le modifiche di tronco duplicate e le modifiche di ramo privato, quindi non c'è una semplice gamma contigua di revisioni da copiare. Specificando l'opzione --reintegrate, stai chiedendo a Subversion di replicare accuratamente solo le modifiche univoche al tuo ramo. (E infatti, lo fa confrontando il tronco più recente con l'ultimo ramo di albero: la differenza risultante è esattamente vostre modifiche del ramo!)
Quindi l'opzione --reintegrate
unisce solo le modifiche che sono unici per la funzione ramo. Ma se si sincronizza sempre prima di unire (che è una pratica consigliata, al fine di gestire eventuali conflitti sul ramo di funzionalità), le uniche modifiche tra i rami sono le modifiche univoche al ramo di funzione, giusto? E se Subversion cerca di unire il codice che è già sul ramo di destinazione, non farà nulla, giusto?
In a blog post, Mark Phippard scrive:
Se includiamo quelle revisioni sincronizzate, poi uniamo indietro cambiamenti che già esistono in tronco. Ciò genera conflitti inutili e confusi.
C'è un esempio di quando il reinserimento reintegrato mi dà conflitti inutili?
Ho appena eseguito questo test utilizzando SVN 1.7.0 e non vedo che ciò accada. Quello che vedo invece è SVN che filtra automaticamente i changeset che esistono già nei rami correlati indipendentemente dalla direzione della fusione (da linea a linea o da linea a linea). Il comportamento di SVN in quest'area è cambiato in un modo che non si riflette nella documentazione? – Neutrino
Ho anche eseguito il test con Netbeans 7.3.1 (che dovrebbe utilizzare SVN 1.7), il mio server SVN è 1.6.17 e non ho alcun problema con le righe duplicate. – betatester07