Server di Versioni con Ubuntu
In Informatica ed in particolare in programmazione, si è spesso coinvolti in progetti in cui il singolo programmatore si trova a dare il proprio contributo in progetti già definiti. Un esempio tipico è il mondo dell’Open Source dove vi sono progetti, composti da diverse decine (se non centinaia) di file, che vengono messi a disposizione delle comunità. Quando il singolo sviluppatore è interessato a questi file, per motivi che possono andare dalla pura curiosità alla volontà di contribuire inserendo migliorie piuttosto che correggendo qualche bug, si trova ad avere a che fare con il “versioning” di un applicativo. In breve si trova a dover usare un apposito software che gli permetterà di ricevere l’ultima versione dei file che lo compongono nonchè, nel caso ne abbia modificato/aggiunto qualcuno, di uploadare ed aggiornare la versione di quelli ri-elaborati da lui.
Il server che è storicamente utilizzato, ma che ora ha ceduto il passo, è CVS (Concurrent Versions System). Ad oggi un server molto utilizzato è Subversion.
Quest’ultimo risulta molto semplice anche installarlo, ecco i brevi passi che occorre compiere, partendo da una installazione base di Ubuntu Server:
Installiamo quanto serve
sudo a2enmod dav_svn
creiamo ora il nostro repository in una directory nuova (usiamo /var perchè è istituzionalmente la directory dove si memorizzano tipologie di contenuti
che richiedono più spazio)
sudo svnadmin create /var/svn
aggiustiamo i diritti di scrittura/lettura per Apache sulla directory creata
sudo chown -R www-data:www-data /var/svn
ed ora configuriamo il nostro server personalizzando il file di configurazione
sudo vi /etc/apache2/mods-enabled/dav_svn.conf
<Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd </Location>
In pratica abbiamo configurato il server per mostrare più di un progetto (SVNPath) ed abbiamo inserito l’autenticazione per il solo (commit) mentre chiunque può scaricare i sorgenti via web visitando la url http://<indirizzo ip>/svn
Ora creiamo il file dav_svn.passwd che servirà per associare <username> a <password> con il seguente comando
sudo htpasswd -cm /etc/apache2/dav_svn.passwd <username>
da usare solo quando si crea la prima volta il file (modificatore -c) in seguito, per aggiungere un utente, potremo usare :
sudo htpasswd -m /etc/apache2/dav_svn.passwd <username>
il tool ci chiederà d’inserire la password. Al termine un bel :
sudo /etc/init.d/apache2 restart
Ora, ipotizziamo di volere importare il nostro progetto, al quale stiamo lavorando da tempo, e che vogliamo condividere.
Innanzitutto copiamo la directory con i file e poi :
svn import /path/directory/origine file:///var/svn/mioprogetto -m “Prima importazione”
ed ora, immaginando che il nostro sia un progetto di un applicativo web, creeremo la directory di destinazione in /var/www, quindi :
sudo mkdir /var/www/mioprogetto
e poi realizziamo il checkout del progetto al suo interno
svn checkout http://<indirizzo ip repository> /var/www/mioprogetto
aggiustiamo i diritti :
sudo chown -R www-data:www-data /var/www/mioprogetto
Ovviamente ogni volta che effettuerete una modifica ad un file in fase di commit non andrà in /var/www/mioprogetto bensì verrà salvato in /var/svn/mioprogetto
sarà per questo che subito dopo il commit dovrete realizzare l’update del file con un :
cd /var/www/mioprogetto svn update
Buon versioning a tutti !!!