47.5. Un'introduzione a subversion

Subversion è un sistema di controllo di versionamento a sorgente aperto che succede a CVS. Le caratteristiche già trattate di CVS si ritrovano generalmente anche in subversion che presenta tutti i vantaggi di CVS senza riproporrne gli svantaggi. Molte delle caratteristiche sono state già trattate nella Sezione 47.1.3, «subversion».

47.5.1. Configurare un server subversion

Impostare un repository su un server è un processo davvero semplice. subversion dispone di un proprio tool. Per generare un nuovo repository, immettete:

svnadmin create /percorso/del/repository

Per visualizzare ulteriori opzioni, immettete svnadmin  help. A differenza di CVS, subversion non si basa su RCS ma su la banca dati Berkeley. Non create una repository su file system remoti come NFS, AFS o Windows SMB. La banca dati richiede dei meccanismi di locking POSIX che i file sytem menzionati non offrono.

Per visionare il contenuto di un repository, vi è il comando svnlook:

   svnlook info /percorso/del/repository

Affinché anche altri utenti possano accedere al repository va configurato un server; potrà trattarsi di un server Web Apache con WebDAV o del server di subversion, svnserve. Se svnserve è in esecuzione si potrà accedere ad una repository tramite L'URL svn:// o svn+ssh://. Tramite il file di configurazione /etc/svnserve.conf potete indicare gli utenti che dovranno autenticarsi se invocano svn.

Rispondere alla domanda quale sistema di versionamento scegliere non è facile, dato che vanno considerati una serie di fattori. Si consiglia di dare un'occhiata al manuale di subversion (per maggiori informazioni, si veda la Sezione 47.5.3, «Ulteriore documentazione»).

47.5.2. Utilizzo

Per accedere ad un repository di subversion vi è il comando svn (simile a cvs). Se il server è stato configurato in modo corretto (con relativo repository) il contenuto di ogni client può essere visionato con:

svn list http://svn.example.com/percorso/del/progetto

oppure

svn list svn://svn.example.com/percorso/del/progetto

Con il comando svn  checkout un dato progetto può essere salvato nella directory attuale (ingl. check out):

  
svn checkout http://svn./percorso/del/progetto nomeprogetto

Il check out crea una nuova sottodirectory nomeprogetto sul client, in cui poter eseguire tutta una serie di modiche come aggiungere, copiare, rinominare e cancellare dei file:

svn add file
svn copy vecchiofile nuovofile
svn move vecchiofile nuovofile
svn delete file

Questi comandi sono applicabili anche a delle directory. Inoltre subversion è in grado di indicare le cosiddette properties, ossia proprietà di un file o di una directory:

svn propset license GPL foo.txt

Nell'esempio precedente è stato impostato il valore GPL per la proprietà license. Le proprietà si lasciano visualizzare con svn  proplist.

svn proplist --verbose foo.txt
Properties on 'foo.txt':
  license : GPL

Per salvare le modifiche sul server, immettete svn commit. Affinché un altro utente possa disporre delle vostre modifiche nella sua directory di lavoro, dovrà eseguire un svn update.

A differenza di CVS, lo stato di una directory di lavoro subversion può essere visualizzato anche senza accesso al repository con svn status. Le modifiche locali vengono visualizzate in cinque colonne, la prima è quella di maggiore rilevanza:

''

Nessuna modifica

'A'

Oggetto da aggiungere

'D'

Oggetto da eliminare

'M'

Oggetto modificato

'C'

Oggetto in stato di conflitto

'I'

Oggetto ignorato

'?'

Oggetto non incluso nel controllo di versionamento

'!'

Oggetto manca. Questo stato si ha se l'oggetto è stato eliminato o spostato senza ricorrere al comando svn.

'~'

Oggetto amministrato come file è stato sostituito da una directory o viceversa.

La seconda colonna indica lo stato delle properties. Tutte le altre colonne vengono illustrate nel manuale di subversion.

Se vi dovesse sfuggire il parametro di un comando, provate con, svn help:

				
svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
       2. proplist --revprop -r REV [URL]

  1. Lists versioned props in working copy.
  2. Lists unversioned remote props on repos revision.
...

47.5.3. Ulteriore documentazione

Innazitutto vi è la home page del progetto subversion che trovate al seguente indirizzo http://subversion.tigris.org/. Se installate il pacchetto subversion-doc nella directory file:///usr/share/doc/packages/subversion/html/book.html sarà a vostra disposizione un manuale in inglese completo che vale davvero la pena di leggere. Tra l'altro è anche disponibile online sotto http://svnbook.red-bean.com/svnbook/index.html.