Tutorial > Gestire le versioni con Subversion (SVN) su Ubuntu 18.04

Gestire le versioni con Subversion (SVN) su Ubuntu 18.04

Pubblicato il: 09 febbraio 2020

Backup Ubuntu Version Control

Apache Subversion, spesso abbreviato in SVN, è un sistema di controllo di versione, distribuito come software open-source.

Attraverso Subversion potrai accedere a una cronologia completa delle modifiche apportate ai file e alle cartelle del tuo server, gestite con il sistema di versioning, e sarai in grado di recuperare versioni precedenti dei tuoi dati, salvaguardandone così la reversibilità.

In questa guida trovi tutti i passaggi necessari per installare e configurare un server Subversion su Apache Ubuntu 18.04.

Installare Apache

Per accedere al server Subversion è necessario installare il web server Apache.

 sudo apt-get update 
 sudo apt-get install apache2 -y 

Controlla lo status di Apache con il comando:

 sudo systemctl status apache2 

Qualora non dovesse essere in esecuzione, attivalo tramite il comando:

 sudo systemctl start apache2 

Adesso abilita l’avvio di Apache al boot del sistema:

 sudo systemctl enable apache2 

Installare il server Subversion

Utilizza il seguente comando per installare Subversion e tutte le dipendenze necessarie:

 sudo apt-get install subversion libapache2-mod-svn -y 

In seguito all’installazione per essere sicuro che siano attivi i moduli necessari, digita:

 sudo a2enmod dav dav_svn authz_svn 

Riavvia quindi il servizio Apache tramite il comando:

 sudo service apache2 restart 

Configurare Apache Subversion

Come prima operazione devi creare una cartella che conterrà tutti i file di Subversion:

 sudo mkdir -p /opt/svn 

Crea un repository per SVN (in questo caso si chiamerà “tutorial”) e definisci il proprietario.

 sudo svnadmin create /opt/svn/tutorial 
 sudo chown -R /opt/svn/tutorial/ 
 sudo chmod -R 775 /opt/svn/tutorial 

Arrivato a questo punto devi creare gli utenti autorizzati ad agire sul repository. Per farlo digita:

 sudo htpasswd -cm /etc/svn-auth-users user_name  

Ti verrà richiesto di inserire una password con la quale l’utente potrà autenticarsi con il sistema.

Ripeti questo passaggio per creare tutti gli utenti che possono accedere al repository.

Ora devi creare un file di configurazione per l’Host Virtuale di Apache.

Recati nella cartella “sites-available” di apache2:

 cd /etc/apache2/sites-available/ 

Crea un file di configurazione per il repository:

 sudo nano tutorial.conf 

Nel file appena creato ed aperto incolla il seguente codice:

        ServerName svn.tutorial.com
        ServerAlias svn.tutorial.com

    DAV svn
     SVNParentPath /opt/svn
     AuthType Basic
     AuthName "Subversion Repository"
     AuthUserFile /etc/svn-auth-users
     Require valid-user

ErrorLog ${APACHE_LOG_DIR}/svn.tutorial.com-error.log
CustomLog ${APACHE_LOG_DIR}/svn.tutorial.com-access.log combined

Salva ed esci.

Disabilita e riabilita l’Host Virtuale, per rendere effettivo il file di configurazione appena scritto, mediante i comandi:

 sudo a2dissite 000-default.conf 
 sudo a2ensite tutorial.conf 

Per verificare che sia tutto stato scritto correttamente, digita il seguente comando e verifica che vi sia scritto “Syntax OK” come ultimo rigo.

 sudo apachectl -t 

A questo punto non ti resta che riavviare Apache con il comando:

 sudo systemctl restart apache2 

Testare il server Subversion

Apri il browser e digita il seguente URL: http://localhost/svn/tutorial

Quando ti chiederà Username e Password utilizza i dati utilizzati quando hai creato gli utenti.

Autenticazione Svn Repository di Subversion

Recati sul terminale e crea un primo progetto digitando:

 svn mkdir file:///opt/svn/tutorial/project_name -m "added project_name repository" 

Il “project_name” scelto per questo tutorial è “Project”.
Creazione Cartella Repository SVN

All’interno del progetto crea le cartelle nelle quali memorizzare i diversi file con il seguente comando:

 sudo svn mkdir file:///opt/svn/tutorial/project_name/folder_name -m "added folder_name to project_name" 
Creazione Cartelle SVN

Se desideri cancellare una cartella o un progetto utilizza i seguenti comandi:

  • Cartella:
     svn delete file:///opt/svn/tutorial/project_name/folder_name -m "delete folder_name folder" 
  • Progetto:
     svn delete file:///opt/svn/tutorial/project_name -m "delete project_name repository" 

Impostare Backup Automatici

Crea una cartella una cartella dove effettuare i backup:

 sudo mkdir -p /etc/backups 

Entra in modalità root ed aggiungi una regola al Crontab:

 sudo su - 
 crontab -e 

Aggiungi la seguente regola al Crontab per far eseguire i backup ogni giorno a mezzanotte:

 0 0 * * *  svnadmin dump /opt/svn/tutorial> /etc/backups/backup-$(date +%Y%m%d).dump 
Crontab Svn

Puoi anche decidere di effettuare un backup manuale, ma per evitare di avere conflitti di file con lo stesso nome, ti conviene rinominare il nome del file di backup. Per effettuare questo tipo di backup digita:

 svnadmin dump /opt/svn/tutorial > /etc/backups/manual_backup_name.dump 

Ripristinare un Repository da Backup

Se vuoi ripristinare un backup precedentemente effettuato, devi creare un nuovo Repository e indicarlo come punto sul quale ripristinare il backup desiderato.

 svnadmin create /opt/svn/restored_repository 
 svnadmin load /opt/svn/restored_repository < /etc/backups/svn_backup_name.dump