Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Lavorare sullo storico

Effettuare ricerche e confronti tra le versioni e ripristinare una vecchia revisione
Effettuare ricerche e confronti tra le versioni e ripristinare una vecchia revisione
Link copiato negli appunti

Subversion è un sistema di versioning, cioè mantiene un archivio storico di tutte le versioni dei file. Esaminiamo i comandi di che ci permettono di agire sulle versioni, dalla visualizzazione dele modifiche effettuate, al confronto tra versioni differenti.

Verificare lo storico

svn log ci permette di visualizzare i messaggi di log associati a una o più revisioni, ad esempio:

svn log -r 5:9

mostra i log delle revisioni dalla 5 alla 9 (incluse). Se usando questo comando si riceve un log vuoto, dobbiamo assicurarci di essere nella cartella principale del progetto e non in una sottocartella.

svn diff, che, come abbiamo già visto, può essere usato per verificare le modifiche locali, serve anche per effettuare un confronto tra diverse revisioni, ad esempio:

svn diff -r 5:6 nomefile

ci mostra un confronto tra la versione 5 e la 6 del file indicato.

Se specifichiamo una sola revisione, viene effettuato un confronto tra la nostra copia di lavoro e la revisione indicata:

svn diff -r 5

In TortoiseSVN, il comando svn log è diventato l'opzione show log, che mostra l'elenco delle revisioni disponibili. Se eseguiamo questo comando su uno specifico file, possiamo poi selezionare due tra le revisioni mostrate, cliccare con il tasto destro e selezionare l'opzione compare revisions per eseguire l'equivalente del comando svn diff.

Ripristinare una revisione precedente

Le operazioni esaminate finora ci permettono di vedere le modifiche effettuate, sia quelle locali e non ancora caricate sul repository, sia quelle delle varie revisioni. Con queste operazioni possiamo procedere manualmente a correggere eventuali modifiche fatte per errore, e poi caricare la copia corretta sul server.

Ma se il nostro obiettivo è semplicemente quello di prendere una vecchia revisione e farla diventare attuale (HEAD), esiste un metodo migliore rispetto a fare un checkout temporaneo e copiare/incollare le modifiche. Tale metodo è fornito dal comando svn merge.

Usato da linea di comando, svn merge ha tre possibili forme, a seconda che si vogliano confrontare due diversi repository, oppure due revisioni del repository dal quale abbiamo estratto la nostra copia di lavoro attuale, oppure una specifica revisione di un repository e una copia di lavoro.

Il comando è molto potente, ma bisogna fare attenzione alla sintassi giusta. È utile consultare il manuale ufficiale di SubVersion per una spiegazione dettagliata delle varie opzioni ed esempi.

Fortunatamente, con TortoiseSVN esiste una "scorciatoia" che ci permette di realizzare l'opzione più semplice, ovvero prendere una vecchia revisione farla diventare HEAD. Clicchiamo con il tasto destro su uno specifico file o cartella, oppure sulla cartella principale del progetto (nel caso in cui si voglia ripristinare l'intero albero); selezioniamo l'opzione show log, scorriamo l'elenco fino a trovare la revisione che ci interessa e, infine, clicchiamo con il tasto destro sull'opzione Revert to this revision.

In questo modo, anziché esportare direttamente la revisione, il client applica "al contrario" alla copia locale le modifiche fino alla revisione indicata.

In questo modo la copia locale non risulta "out-of-date" e quindi possiamo effettuare il commit, generando una nuova revisione che però corrisponde a quella precedentemente selezionata.

Ti consigliamo anche