Unisci il ramo al tronco


119

Utilizzando TortoiseSVN, ho bisogno di prendere le modifiche che ho fatto in un ramo e poi unirle al tronco.

Sono l'unico sviluppatore di questo progetto, quindi so che il tronco non è cambiato. Sto imparando SVN in modo che alla fine il mio team possa usarlo.

Fondamentalmente, voglio che il mio baule assomigli esattamente al ramo.

Nel mondo pre-svn, copiavo semplicemente i file nella mia cartella di ramo, eliminavo i file nella cartella del tronco e quindi copiavo il ramo nel tronco.

In TortoiseSVN, ho provato Reintegrate a branch, Merge a range of revisionse Merge two different trees. Niente sembra effettivamente cambiare il tronco. Ho anche provato a ramificare in cima al tronco. Questo mi dà un errore, dicendo che il tronco esiste già.

Risposte:


157

Nel tuo caso:

  1. Passa la copia di lavoro al trunk (SVN Switch)
  2. Unisci il ramo nella copia di lavoro (SVN Merge)
  3. Assicurati che tutto sia ancora compilato e funzioni
  4. Eseguire il commit della copia di lavoro (il tronco)
  5. Considera l'idea di uccidere il ramo

In un ambiente di squadra ti suggerirei di unire prima le ultime modifiche dal trunk nel tuo ramo, assicurarti che tutto si compili e funzioni, quindi eseguire i passaggi precedenti (il che sarà banale dato che hai già testato le modifiche).


Aggiornare

Nel passaggio 5, menziono l'uccisione del ramo. Questo perché una volta che un ramo di una funzione è nel tronco, dovrebbe essere considerato come parte del tronco. In tal caso il ramo dovrebbe essere ucciso in modo che nessuno continui a lavorarci sopra. Se sono necessarie modifiche importanti per quella funzione, dovresti creare un nuovo ramo per quella.

Gli unici rami che non uccido sono i rami di manutenzione e rilascio, a meno che una particolare versione non sia più supportata.

Non importa cosa, hai sempre accesso a ogni revisione, quindi uccidere un ramo viene utilizzato solo per impedire ad altri sviluppatori di sviluppare su un ramo morto.


Il commento che hai aggiunto al passaggio 5 potrebbe probabilmente essere il passaggio 1? Quando si desidera utilizzare "Reintegrate a branch" dalla finestra di dialogo TortoiseSVN Merge, è necessario unire prima tutte le modifiche dal tronco (o ramo di base).
jbvo

1
Il primo passaggio (cambiare la copia di lavoro in trunk) è necessario solo se non si dispone di una copia di lavoro separata di branch e trunk?
Jeff B

1
Penso che un dettaglio importante che manca qui sia la cartella su cui fai clic per ogni passaggio, quindi conosci il contesto di ogni passaggio.
MacGyver

10

Penso che in TortoiseSVN 1.8.5, Merge | Unire due alberi diversi dovrebbe funzionare. Quando unisci di nuovo un ramo / tag al tronco, il trucco è che l'URL Da è il tronco e il A è il tag / ramo. Strano ma vero.

Fonte: fusione

Per le directory che non si trovano nella tua copia di lavoro ma nel tag / ramo potresti ricevere errori di conflitto. Accetta il conflitto e ripeti l'unione.


Dopo aver seguito le istruzioni sul sito tortoisesvn, assicurati dopo l'unione di eseguire il commit del trunk senza modificare nulla. Ho provato a deselezionare alcune cose che non volevo commesse, il che causava un avviso di commit non ricorsivo. Inoltre, considera l'eliminazione del ramo come dicono le istruzioni.
goku_da_master

6

Per prima cosa sposta la tua copia di lavoro nel trunk. Quindi unisci una serie di revisioni, dal ramo al tronco. Una volta completata questa finestra di dialogo, le differenze saranno in attesa di modifiche nella copia di lavoro di trunk. Dovrai eseguirne il commit proprio come se avessi apportato manualmente le modifiche sulla tua copia di lavoro.

Nel mio utilizzo, è più tipico mantenere il tronco in funzione e le ramificazioni di spin durante le build. Quindi l'unica unione di cui ho bisogno è quella di ottenere una correzione di bug dal trunk e metterla sull'ultimo ramo di build e ripubblicare quel ramo. Il modo più semplice per me per farlo, dal momento che hai scoperto che l'unione è goffa nella migliore delle ipotesi. Consiste nel mantenere l'ultimo ramo e il trunk controllati sulla mia macchina e copiare letteralmente i file da trunk a branch e archiviare entrambi.


2
Occorre prestare molta attenzione alla "copia" dei file. Usa qualcosa come l'esportazione di TortoiseSVN per evitare di danneggiare le directory svn nascoste.
Milimetrico

3

Sto usando TortoiseSVN 1.9.3, Build 27038.

Seguire i passaggi seguenti per unire il ramo al tronco.

1) Fare clic con il tasto destro sulla copia funzionante del tronco e selezionare l'opzione sottostante.

inserisci qui la descrizione dell'immagine

2) In caso di fusione del ramo nel trunk, selezionare l'opzione per seconda come mostrato di seguito e fare clic su Avanti

inserisci qui la descrizione dell'immagine

3) Nel campo Da: immettere l'URL della cartella completa del trunk. Può sembrare sbagliato, ma ricorda che il tronco è il punto di partenza a cui vuoi aggiungere le modifiche del ramo. Nel campo A: immettere l'URL completo della cartella del ramo funzionalità.

inserisci qui la descrizione dell'immagine

4) Fare clic su Avanti ed eseguire il test di unione

inserisci qui la descrizione dell'immagine

5) Se l'unione di prova ha esito positivo, fare clic sul pulsante Unisci.

6) Una volta che l'unione è riuscita, eseguire il commit delle modifiche sul trunk.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.