27.5. Introduzione a Subversion

Subversion è un sistema di controllo delle versioni open source ed è generalmente considerato il successore di CVS poiché molte delle funzioni di CVS sono generalmente disponibili anche in Subversion. Questo programma consente di usufruire dei vantaggi di CVS, ma non presenta i problemi problemi di questo programma. Molte di queste funzioni sono descritte brevemente nella Sezione 27.1.3, "Subversion".

27.5.1. Installazione di un server Subversion

L'installazione del database di archivio su un server è un'operazione relativamente semplice, anche perché Subversion fornisce uno strumento di amministrazione dedicato utilizzabile per questo scopo. Il comando per la creazione di un nuovo archivio è:

svnadmin create /path/to/repository

Per visualizzare le altre opzioni disponibili, usare il comando svnadmin help. A differenza di CVS, Subversion non è basato su RCS ma su diversi tipi di archivio. Generalmente viene usato l'archivio di Berkeley o FSFS (che utilizza direttamente i file system). Non installare l'archivio su file system remoti come NFS, AFS o Windows SMB. Il database richiede l'uso di meccanismi di blocco POSIX non supportati da questi file system.

Usare il comando svnlook per visualizzare informazioni su un archivio esistente.

svnlook info /path/to/repository

Per consentire ai diversi utenti di accedere all'archivio, è necessario configurare un server. Per eseguire questa operazione, usare il server Web di Apache con WebDAV o svnserve, il server integrato di Subversion. Dopo l'impostazione e l'esecuzione di svnserve, è possibile accedere all'archivio tramite un URL utilizzando il comando svn:// o svn+ssh://. Gli utenti per i quali è richiesta un'autenticazione per l'uso di svn possono essere impostati in /etc/svnserve.conf.

La decisione se scegliere Apache o svnserve dipende da molti fattori. È generalmente consigliabile consultare la documentazione di Subversion. Per ulteriori informazioni, vedere la Sezione 27.5.3, "Ulteriori informazioni".

27.5.2. Uso e funzionamento

Usare il comando svn (simile a cvs) per accedere all'archivio di Subversion. Quindi, usare il comando svn help per ottenere la descrizione di un parametro del comando:


checkout (co): Check out a working copy from a repository. 
usage: checkout URL[@REV]... [PATH]

  Se specificato, REV indica in quale revisione è stato inizialmente ricercato l'URL.

  Se si omette PATH, viene usato il nome di base dell'URL 
  come destinazione. Se sono presenti più URL, ciascun URL 
  viene estratto e salvato in una sottodirectory di PATH, dove il nome della   
  sottodirectory corrisponde al nome di base dell'URL. 
...

I client possono accedere ai contenuti forniti da un server configurato correttamente e munito di un archivio con uno dei seguenti comandi:

svn list http://svn.example.com/path/to/project

oppure

svn list svn://svn.example.com/path/to/project

Salvare il progetto esistente nella directory corrente (eseguire il check out) con il comando svn checkout:

svn checkout http://svn.example.com/path/to/project nameofproject

Questa operazione crea una nuova sottodirectory denominata nameofproject sul client. È possibile anche effettuare operazioni quali aggiunte, copie, ridenominazioni o eliminazioni:

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

Questi comandi possono essere usati anche per le directory. Subversion può anche registrare le proprietà di un file o di una directory:

svn propset license GPL foo.txt

L'esempio precedente permette di impostare il valore GPL per la proprietà license. Per visualizzare le proprietà, usare il comando svn proplist:

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

Selezionare il comando svn commit per salvare le modifiche sul server. Gli altri utenti possono incorporare le modifiche nelle proprie directory di lavoro effettuando una sincronizzazione con il server mediante il comando svn update.

A differenza di CVS, Subversion consente di visualizzare lo stato della directory di lavoro anche senza accedere all'archivio con il comando svn status. Le modifiche locali vengono visualizzate in cinque colonne, dove la prima rappresenta quella più importante:

' '

Nessuna modifica.

'A'

Oggetto contrassegnato per l'aggiunta.

'D'

Oggetto contrassegnato per l'eliminazione.

'M'

Oggetto modificato.

'C'

Oggetto in conflitto.

'I'

Oggetto ignorato.

'?'

Oggetto non incluso nel controllo delle versioni.

'!'

Oggetto segnalato come mancante. Questo flag viene visualizzato quando l'oggetto è stato eliminato o spostato tramite il comando svn.

'~'

Oggetto originariamente gestito come file, ma sostituito con una directory oppure il caso inverso.

La seconda colonna mostra lo stato delle proprietà. Per informazioni sul significato delle singole colonne, consultare la documentazione di Subversion.

27.5.3. Ulteriori informazioni

Il primo punto di riferimento è la home page del progetto Subversion alla pagina Web http://subversion.tigris.org/. Un documento molto interessante è quello contenuto nella directory file:///usr/share/doc/packages/subversion/html/book.html che viene creata dopo l'installazione del pacchetto subversion-doc e che è disponibile anche su Internet all'indirizzo http://svnbook.red-bean.com/svnbook/index.html.