SVN è un sistema open source di controllo della versione creato dalla Apache Foundation Team. Permette di tenere traccia di tutte le modifiche effettuate su una raccolta di file e cartelle. Ogni volta che modifichi, aggiungi o elimini un file o una cartella dentro un repository locale che gestisci con Subversion e invii queste modifiche al tuo repository Subversion sul server, viene creata una nuova revisione che riflette queste modifiche. Subversion permette di tornare sempre indietro, guardare e ottenere il contenuto delle revisioni precedenti.
Anche se Subversion è in grado di gestire qualunque genere di file (sia di testo che binario) viene usato in modo particolare con i repository contenente codice sorgente.
Vediamo come si configura Subversion (svn) su un server basato sui sistemi operativi Debian 10, Debian 9 e Debian 8.
1° passo: installare Apache
Per prima cosa occorre installare il server web Apache, necessario ai moduli di Subversion che installeremo successivamente. Aprire quindi una console dei comandi e digitare in sequenza:
$ sudo apt-get update $ sudo apt-get install apache2
2° passo: installare SVN
Procediamo con l’installazione dei pacchetti di Subversion. Dopodiché riavviamo anche il server Apache:
$ sudo apt-get install subversion libapache2-mod-svn libapache2-svn libsvn-dev
$ sudo a2enmod dav sudo a2enmod dav_svn
$ sudo service apache2 restart
3° passo: configurare Apache e SVN
Adesso occorre modificare alcuni file di configurazione per abilitare le funzioni necessarie. Editiamo per primo il file /etc/apache2/mods-enabled/dav_svn.conf e aggiungiamo le seguenti righe:
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
4° passo: creare il repository SVN
Adesso digitare i seguenti comandi per creare il nostro repository usando il nome myrepo. Naturalmente usatene uno più adatto alle vostre esigenze:
$ sudo mkdir -p /var/lib/svn/
$ sudo svnadmin create /var/lib/svn/myrepo
$ sudo chown -R www-data:www-data /var/lib/svn
$ sudo chmod -R 775 /var/lib/svn
5° passo: creare gli utenti
E’ possibile limitare e proteggere il nostro repository limitandone l’accesso solo agli utenti autorizzati. Scriviamo questi comandi per creare il primo utente:
$ sudo htpasswd -cm /etc/apache2/dav_svn.passwd admin
Aggiungiamo altri utenti:
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd user1
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd user2
6° passo: accedere al repository dal browser web
Apriamo il browser e andiamo al seguente url:
http://example.com/svn/myrepo
Ci verrà chiesto di inserire le nostre credenziali di accesso (nome utente e password).
A questo punto non ci resta che eseguire il checkout del nostro repository in locale, aggiungere e modificare file, quindi inviare le modifiche al server (in gergo commit). Potremmo farlo da riga di comando ma suggerisco di usare gli strumenti integrati degli IDE di sviluppo oppure utilizzare un front-end specifico che si integri con l’ambiente desktop. In ambito Windows suggerisco di usare Tortoise SVN.