2009-09-02 8 views
13

Ecco la situazione: Su un ramo particolare, alcune modifiche sono state unite in da il trunk e anche le modifiche al ramo sono state unite di nuovo nel trunk.L'unione di un'unione causa un problema in subversion?

La domanda che ho è questa: Che cosa, se non altro, non la gestione unione in Subversion fare se provo a fondersi di nuovo in tronco dal ramo una revisione che era di per sé solo una fusione dal la tronco al ramo?

Ciò causerà problemi? Se sì, che tipo? O dovrebbe essere una cosa perfetta da fare?

Oppure la nuova unione tratta solo le modifiche come le altre e tenta semplicemente di applicarle?

risposta

4

Questo è uno scenario anche se il rilevamento unione delle nuove versioni SVN non può gestire automaticamente. Quindi hai specificato le revisioni che vuoi unire di nuovo nel bagagliaio manualmente e devi assicurarti di escludere le revisioni che si uniscono dal tronco al ramo.

Se si tenta di rimandare le modifiche che sono già presenti nel bagagliaio, verranno considerate normali modifiche. Ciò porterà inevitabilmente a conflitti.

4

Dipende parzialmente dalla versione di svn che si sta utilizzando.

Pre 1.5, non c'era alcun tracciamento unione, quindi dovresti unire le revisioni desiderate. La maggior parte delle persone ha usato il nome di script "svnmerge" per quello. Puoi usarlo se vuoi, e segnare le revisioni che hai già fatto come unite - dopo di ciò, svnmerge ti darà un aiuto nel scegliere le giuste revisioni e saltare quelle già unite.

1.5 (e versioni successive) fornisce un controllo di unione, ma non è ancora completo. Nel tuo caso particolare (fondendosi in entrambi i modi), non penso che il monitoraggio di svn possa gestirlo. Probabilmente dovrai unire ogni revisione che vuoi avanti e indietro manualmente.

Personalmente, quando sono in progetti che utilizzano svn, preferisco creare rami un po 'di breve durata, e unire solo un modo (da tronco a ramo) fino alla fusione finale da ramo a tronco. Una volta che l'ho fatto, o unisco tutto nel bagagliaio e chiudo il ramo, oppure unisco quello che voglio e chiudo il ramo. Quasi mai mantengo vivo il ramo, a causa di possibili problemi di fusione (è facile commettere un errore).

2

Utilizzando la versione 1.5 o successiva di subversion, è necessario specificare l'opzione --reintegrate per svn unione in modo che le unioni siano solo copie delle precedenti unioni "al contrario".

Si noti che 1) Sta a voi sapere quando è necessario utilizzare questa opzione 2) Sarà l'ultima fusione da quel ramo. Dopo questa unione, svn considererà il ramo morto e ulteriori lavori richiederanno di distruggere e ricreare il ramo.

Questo è direttamente da svn docs, sebbene i documenti possano utilizzare una suddivisione più dettagliata in sottosezioni.

Problemi correlati