Problema in SVN fusione dirama in tronco
Domanda
Ho un tronco (A) e due rami (B e C). Quando mi fondo A con C il suo OK, dopo mi fondo A con B, il precedente C sua sovrascritto e il mio tronco non hanno le modifiche C.
Quello che voglio è A + B + C in tronco dopo unioni.
A cura maggiori spiegazioni:
- Nel bagagliaio Ho 3 file: "FILE 1", "FILE 2" e "FILE 3";
- I creare un ramo dal tronco come "Branch 1";
- posso passare a "Branch 1", posso correggere i bug in "FILE 1" di file e impegno;
- Nello stesso tempo, un'altra persona di creare un ramo dal tronco come "succursale 2";
- Questa persona fissare un altro bug in "FILE 2" i file e "FILE 3" e si impegnano;
- La "succursale 2" è stato approvato per la pubblicazione, poi ho merge "Branch 2" a "trunk" (il suo ok);
- Nel giorno dopo il "ramo 1" è stato approvato, quindi mi fondo "Branch 1" a "tronco", e il "tronco" perdere le modifiche dal "ramo 2".
Soluzione
- Fare una copia di lavoro di
trunk
-
svn merge -r W:X svn://branchA workingCopy
-
svn merge -r Y:Z svn://branchB workingCopy
Credo che questo vi darà quello che vuoi, che è il tronco più eventuali modifiche apportate da uno dei rami. Si dovrà affrontare i conflitti, tuttavia.
Altri suggerimenti
Supponendo che si sta usando Subversion 1.5 o superiore, credo che si vuole "reintegrare" tuoi rami di nuovo al tronco, vedere http://blog.red-bean.com/sussman/?p=92
Il tuo terminologia non è chiaro. Quando si dice "fondersi A con B" significa che si uniscono A in B o B in A? Può spiegare esattamente quello che hai fatto per creare i rami, e come ha tentato di fare la fusione? Inoltre, per la fusione è importante quale versione SVN che si sta utilizzando.
Vi suggerisco di leggere con attenzione il capitolo sulla ramificazione e la fusione nel libro SVN.
In sostanza, quando si ha un ramo di caratteristica (che è quello che sembrano avere), è più volte unire il ramo in esso. SVN registra quindi che le revisioni si fuse e non unirle di nuovo. Quando hai finito con il vostro ramo, si reintegrare in tronco e respingerlo.
Tutto questo viene fatto sul disco, un ramo alla volta, per risolvere i potenziali conflitti dopo ogni ramo, e il check-in ogni passo. (Se per qualche motivo è necessario applicare le modifiche al tronco in un unico check-in, è possibile unire i rami in un ramo fresco fuori il tronco e quindi unire quel ramo nel bagagliaio quando hai finito.)
Si desidera applicare le unioni per l'area di lavoro, non il repository. In alternativa è possibile utilizzare cvs che si occupa con i rami in modo di gran lunga superiore rispetto svn fa.