24.5. Un 'introduzione a subversion

24.5.1. Campi di impiego

Subversion è un sistema di controllo versione a sorgente aperto che succede a CVS. Le caratteristiche già trattate di CVS si ritrovano spesso anche in subversion che presenta tutti i vantaggi di CVS senza riproporrne gli svantaggi. Molte delle caratteristiche sono state già trattate nella sezione Section 24.1.3, “subversion”.

24.5.2. Configurare un server subversion

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

svnadmin create /percorso/della/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 una repository, vi è il comando svnlook:

svnlook info /percorso/della/repository

Affinché anche altri utenti possano accedere alla repository va configurato un server; potrà trattarsi di un server web Apache 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 subversion (per maggiori informazioni, si veda la sezione Section 24.5.4, “Ulteriore documentazione”).

24.5.3. Utilizzo

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

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

oppure

svn list svn://svn./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

Al check out si ottiene 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 oldfile newfile
svn move oldfile newfile
svn delete file

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

svn propset license GPL foo.txt

Imposta per il file foo.txt la proprietà license sul valore GPL. Tramite svn proplist elencate le proprietà:

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

Per rispedire le vostre modifiche al 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 alla repository:

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 versione

'!'

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 (si veda la prossima sezione).

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.
...

24.5.4. Ulteriore documentazione

Innazitutto vi è la home page di 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.