Subversion (SVN) sur Ubuntu 20.04

Publié par David le

Subversion est un logiciel de gestion de versions, distribué sous licence Apache.

Installation de Subversion

On crée l’utilisateur svn

sudo useradd -m -d /home/svn -U -r -s /bin/bash svn

On installe subversion

sudo apt install subversion

Faire son premier dépôt

Tout d’abord, créez un dépôt (nous considérerons le répertoire user1).

On se connecte à l’utilisateur svn

sudo su - svn

Et on crée le dépôt

cd /home/svn &&
svnadmin create /home/svn/user1

Et on démarre le serveur

svnserve -d -r /home/svn

Vous pouvez maintenant accéder à votre dépôt (à l’aide d’un logiciel comme TortoiseSVN) avec l’adresse svn://IP_de_votre_serveur/user1

Configurer votre serveur

Fichier de configuration principal

il faut éditer le fichier svnserve.conf avec au minimum avec les valeurs suivantes

nano /home/svn/user1/svnserve.conf

Éditez le fichier de configuration et changer les lignes comme ci-dessous

[general]
password-db = passwd
authz-db = authz

Fichier des mots de passe

Puis le fichier paswd

nano /home/svn/user1/passwd

Et on spécifie l’utilisateur et le mot de passe comme ci-dessous

[users]
user1 = password

On protège les mots de passe, car ils ne sont pas cryptés,  il convient donc d’en interdire l’accès en lecture à tout le monde

chmod o-r /home/svn/user1/conf/authz &&
chmod o-r /home/svn/user1/conf/passwd

Fichier des droits d’accès

Et le fichier des droits d’accès

sudo nano /home/svn/user1/authz

Et on donne les droits maximum à l’utilisateur user1

[/]
user1 = rw

Installer le script de démarrage

On quitte l’utilisateur svn

exit

Puis on édite le fichier de configuration systemctl

sudo nano /etc/systemd/system/svnserve.service

Éditez le fichier de configuration et changer les lignes comme ci-dessous

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
RuntimeDirectory=svnserve
PIDFile=/run/svnserve/svnserve.pid
EnvironmentFile=/etc/default/svnserve
ExecStart=svnserve -d -r /home/svn
User=svn
Group=svn
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target

Puis on ajoute les options de démarrage du service

sudo nano /etc/default/svnserve

On remplit le fichier ainsi

# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /home/svn --log-file /var/log/svnserve/svnserve.log"

Puis on crée le répertoire des logs

mkdir /var/log/svnserve &&
chown svn: -R /var/log/svnserve

Et on ajoute la configuration pour la rotation des logs pour archiver convenablement ces derniers

sudo nano /etc/logrotate.d/svnserve

On remplit le fichier ainsi

/var/log/svnserve/*.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 640 svn adm
    sharedscripts
    postrotate
            if /bin/systemctl status svnserve > /dev/null ; then \
                /bin/systemctl restart svnserve > /dev/null; \
            fi;
    endscript
}

Puis on démarre le service et on l’exécute au démarrage

sudo systemctl daemon-reload &&
sudo systemctl start svnserve.service &&
sudo systemctl enable svnserve

On vérifie l’état du système

sudo systemctl status svnserve

La sortie devrait ressembler à quelque chose comme ci-dessous, montrant que le service Odoo est actif et en cours d’exécution

● svnserve.service - Subversion protocol daemon
     Loaded: loaded (/etc/systemd/system/svnserve.service; enabled; vendor preset: enabled)
     Active: activating (start) since Sun 2021-05-16 15:55:37 UTC; 1min 12s ago
    Process: 2084 ExecStart=/usr/bin/svnserve -d -r /home/svn (code=exited, status=0/SUCCESS)
      Tasks: 1 (limit: 38487)
     Memory: 1.1M
     CGroup: /system.slice/svnserve.service
             └─2085 /usr/bin/svnserve -d -r /home/svn

Sauvegarder son dépôt

svnadmin -q dump /home/svn/user1 > /backup/svn/user1.svndump

Restaurer son dépôt

svnadmin create /home/svn/user1 &&
svnadmin load /home/svn/user1 < /backup/svn/user1.svndump

Et n’oublier de configurer les fichiers

  • /home/svn/user1/conf/passwd
  • /home/svn/user1/conf/svnserve.conf
  • /home/svn/user1/conf/authz

Modifier les logs d’un dépôt SVN

mv /home/svn/user1/hooks/pre-revprop-change.tmpl /home/svn/user1/hooks/pre-revprop-change &&
chmod +x /home/svn/user1/hooks/pre-revprop-change &&
sudo systemctl restart svnserve

 

Catégories : Linux

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *