Domanda

Supponiamo di avere una serie di commit in una cartella del repository ...

123 (250 new files, 137 changed files, 14 deleted files)
122 (150 changed files)
121 (renamed folder)
120 (90 changed files)
119 (115 changed files, 14 deleted files, 12 added files)
118 (113 changed files)
117 (10 changed files)

Voglio ottenere una copia funzionante che includa tutte le modifiche dalla revisione 117 in poi ma NON includa le modifiche per le revisioni 118 e 120.

EDIT: forse per rendere più chiaro il problema, voglio annullare le modifiche apportate in 118 e 120 mantenendo tutte le altre modifiche. La cartella contiene migliaia di file in centinaia di sottocartelle.

Qual è il modo migliore per raggiungere questo obiettivo?

La risposta , grazie a Bruno e Bert, è il comando (in questo caso, per rimuovere 120 dopo l'esecuzione dell'intera unione)

svn merge -c -120 .

Nota che il numero di revisione deve essere specificato con un segno meno. "-120" non "120"

È stato utile?

Soluzione

Per annullare le revisioni 118 e 120:

svn up -r HEAD       # get latest revision
svn merge -c -120 .  # undo revision 120
svn merge -c -118 .  # undo revision 118
svn commit           # after solving problems (if any)

Vedi anche la descrizione in Annullamento delle modifiche .

Nota il segno meno nell'argomento -c -120 . L'opzione -c (o --change ) è supportata da Subversion 1.4, le versioni precedenti possono usare -r 120: 119 .

Altri suggerimenti

C'è un modo più semplice se usi TortoiseSVN, un client Windows per Subversion. Basta fare clic per visualizzare il registro nella copia di lavoro aggiornata, selezionare le revisioni che si desidera annullare, fare clic con il tasto destro e selezionare " Ripristina modifiche da queste revisioni " ;.

È un'operazione sicura perché le modifiche vengono applicate solo nell'area di lavoro. Devi ancora impegnarti a modificare il tuo repository.

È una delle migliori caratteristiche di TortoiseSVN. Sono sempre stato un tipo da linea di comando, ma Tortoise mi ha cambiato idea.

Suppongo che potresti creare un ramo dalla revisione 117, quindi unire tutto tranne 118 e 120.

svn copy -r 117 source destination

Quindi controlla questo ramo e da lì svnmerge.py unisci -r119,120-123

MODIFICA: Questo non annulla le revisioni nel ramo / tronco. Utilizzare invece svn merge .

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