Subversion (SVN) sur Ubuntu 20.04
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
0 commentaire