02
04
06

SVN in breve

18:31 Technocracy
Questa è una brevissima guida all'uso di SVN. Non è esauriente e non fornisce tutti gli stumenti per lavorare con SVN, ma è utile come riferimento per iniziare e per i primi passi.

Per tutta una congiuntura di motivi ho trovato due minuti di tempo per leggere una parte dell’ottimo libro gratuito scaricabile Version Control with Subversion.

Faccio un po’ di background. SVN è un sistema client-server per la gestione condivisa di files, capace di conservare lo storico dei files che vengono inseriti sul server.
Il server è chiamato Repository, ovvero il magazzino dove viene mantenuta la copia originale.
Il client accede tramite il comando svn al Repository, crea una propria Working Copy locale e lavora su questa. La Working Copy è identificata tramite una directory nascosta .svn che contiene i dati necessari alla sincronizzazione (ed è quindi fondamentale non toccare le cartelle .svn). Come potrete avere intuito, la Working Copy è assolutamente temporanea.
Se non avete un server SVN a disposizione, potete creare un repository locale con il comando svnadmin.

svnadmin create local/repository/path

Tutto ha inizio con il comando che serve per il primo caricamento dei files sul server SVN che avete precedentemente configurato (accessibile via protocollo file, http, svn, svn+ssh):

svn import local/path http://svn.server/project -m "first description"

Successivamente è necessario poter accedere a questi files tramite il comando checkout che crea una copia locale, la Working Copy, dei files prelevati da un path SVN:

svn checkout http://svn.server/project local/path

A questo punto si ha il Repository pronto con la prima versione dei propri files ed una copia di lavoro in qualche directory: si può inziare a lavorare. Successivamente, per aggiornare i files nel Repository basta utilizzare il comando:

svn commit -m "commit description"

Notate che non bisogna specificare la posizione del Repository o quali files si desidera uploadare in quanto siamo in una Working Copy identificata dalle cartelle nascoste .svn.

L’ultimo comando di questa carrellata serve per aggiornare la propria Working Copy:

svn update

In effetti questi comandi non sono affatto complicati. Ve ne sono altri, naturalmente, poiché questi non esauriscono gli strumenti utili per poter lavorare, ma credo che questo sia il minimo essenziale per avere una idea di come funzioni.
Si può poi aggiungere che TextMate ha un valido supporto SVN, così come molti altri software di sviluppo.

5 comments

1

Simbul 2006 04 02 at 19:09

In effetti mi stavo interessando anche io a svn in questo periodo.
Ho letto parte del libro qualche tempo fa e mi è servito a chiarire alcune idee fumose che avevo sul funzionamento del CVS.
Adesso devo solo riuscire a installare Trac :P
2

Giorgio Martini 2006 04 03 at 18:57

Il punto (per quello che mi riguardo, almeno) non è tanto la facilità o meno del version control (svn o cvs che sia), ma piuttosto la sua reale utilità per un web developer in solitaria a tempo perso come me. Ovvero: considerando i tempi di setup e il lavoro rallentato dai continui commit, ne ho davvero un guadagno?
3

Folletto Malefico 2006 04 03 at 20:19

Beh, ti dirò, il mio dubbio sino ad oggi era proprio questo: il tempo che avrei perso ad ogni commit, nel senso che mi sembrava piuttosto "artificioso" il meccanismo di lavoro.

In realtà -oltre a tutti gli ovvi vantaggi he svn offre- credo che il miglior guadagno sia mentale. Vi erano dei momenti nel mio scorso progetto (phpGolem) in cui avevo quasi il timore di applicare certe modifiche perché avrebbero condizionato una larga parte del software. La sicurezza di avere ogni step di sviluppo memorizzato mi consente di avere più libertà in questo senso.

Se poi unisci a questo l'uso di un software che automatizza il processo (come TextMate che attualmente uso) la perdita dal punto di vista del tempo è praticamente nulla. :)
4

Saverio 2008 05 30 at 23:09

Solo una piccolissima aggiunta, nel caso in cui qualcuno usi SVN in gruppo (che poi è l'utilizzo più comune).

È frequente che si verifichino dei conflitti, ovvero due utenti del gruppo hanno modificato lo stesso file, quindi il primo può fare commit senza problemi, il secondo invece riceverà un messaggio di errore e dovrà risolvere il conflitto prima di poter fare commit.

Siccome ho dovuto cominciare a lavorare in gruppo con SVN (in particolare per la stesura di articoli in LaTeX e per simulazioni in Matlab), ho scritto una breve nota su come risolvere i conflitti:

http://saverio.bolognani.googlepages.com/svn

Spero possa esservi di aiuto! Ciao!!
5

Folletto Malefico 2008 05 30 at 23:34

Beh, questa è solamente una introduzione. Per spiegazioni più esaurienti consiglio di fare buon uso dei motori di ricerca e reperire informazioni più dettagliate e approfondite, ce n'è un gran numero. :)