Continua il nostro corso su SVN. Oggi ci occupiamo dei comandi update e checkout.
– Il comando update
Il comando update, come presumibile ha la funzione di aggiornare lo stato (e di conseguenza il contenuto) di uno o più file. E’ buona norma e consigliabile tenere sempre aggiornato lo stato del progetto onde evitare spiacevoli conflitti. La sintassi è molto semplice e permette di aggiornare i nostri file ad una relativa versione oppure all’ultima committata sul server.
Tornando alla nostra finestra iniziale eseguiamo il comando:
# svn update
U fileadd
U file1
Updated to revision 4.
Come prevedibile i nostri file sono stati aggiornati. Ma cosa sarebbe successo se avessimo eseguito il comando update su di un file cambiato localmente? Proviamo nella seconda finestra a rieditare il file file2 e ricommittiamolo:
# echo “prova da finestra 2” >> file2
# svn commit -m “modifico nuovamente il file file2” file2
Trasmetto file2
Trasmissione dati .
Commit della Revisione 5 eseguito.
Ora ritorniamo alla nostra finestra principale ed editiamo anche qui lo stesso file di progetto:
# echo “prova da finestra 1” >> file2
Dopo di che proviamo a fare un update dello stesso file in quanto con l’altra utenza in precedenza abbiamo apportato, ma sopprattutto commitato, delle modifiche. Il risultato sarà il seguente:
# svn update file2 C file2
Updated to revision 5.
Andiamo ora a vedere il contenuto del nostro repository locale:
# ls
file1 file2 file2.mine file2.r4 file2.r5 fileadd filen
SVN ovviamente si è accorto dell’esistenza di una copia locale ed ha dunque creato 3 nuovi file (copie che ovviamente non verranno riconosciute dal server) uno con estensione .mine nel quale viene spostato il mio file appena modificato e 2 contenenti il contenuto delle ultime 2 versioni del file sul server.
Nel nostro file invece sarà contenuto il risultato del diffing delle 2 versioni del file.
# cat file2.mine prova da finestra 1
#cat file2.r4
# cat file2.r5 prova da finestra 2
# cat file2 >>>>>> .r5
Ovviamente prima di ricommittare il file è necessario risolvere l’anomalia, ed eseguire il comando di resolved:
# svn commit -m “committo file2 senza effettuare la resolved” file2
svn: Commit failed (details follow):
svn: Aborting commit: ‘/home/copia_locale_mio_repository/file2’ remains in conflict
# svn resolved file2 Resolved conflicted state of ‘file2’
# svn commit -m “committo file2 dopo aver eseguito la resolved” file2
Sending file2
Transmitting file data .
Committed revision 6.
– Il comando checkout
Come visto in precedenza, questo comando permette di scaricare in locale una copia del progetto. E’ possibile scaricare il repository sia da file locale, sia dalla rete con il protocollo http. Per default il comando scarica l’ultima versione depositata sul server richiesto, ma consente con l’opzione “-r” di ritornarne una precedentemente archiviata.
Apriamo una terza finestra ed eseguiamo i seguenti comandi ed estraiamo la versione numero 3 del nostro progetto.
# mkdir /home/terza_copia_locale_mio_repository
# cd /home/cd terza_copia_locale_mio_repository/
# svn checkout -r 3 http://IP_Server_Repository/svn/mio_repository
. A file1 A file2 A fileadd A filensvn
Estratta revisione 3.
Se andiamo a rivedere indietro le nostre modifiche ci ricorderemo che il commit sulla versione 3 è stato eseguito in seguito al comando:
# echo “modifico file1 da finestra 2” >> file1
Per cui file1 dovrebbe essere l’unico file modificato fino a quel momento. Per esserne certi facciamo un cat sui 3 file modificati nell’intero progetto
# cat file1 (modifico file1 da finestra 2)
# cat file2
# cat fileadd
Come volevasi dimostrare file2 e fileadd risultano vuoti. Nell’ultimo numero vedremo come creare una copia di backup del nostro repository e come poterlo esportare.
LEZIONI PRECEDENTI:
13 Novembre 2007: Realizzazione e configurazione di un server repository SVN (1/6)
15 Novembre 2007: Realizzazione e configurazione di un server repository SVN (2/6)
16 Novembre 2007: Realizzazione e configurazione di un server repository SVN (3/6)
di Diego Dagassolemi - TuxJournal.net