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
1 |
sudo useradd -m -d /home/svn -U -r -s /bin/bash svn |
On installe subversion
1 |
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
1 |
sudo su - svn |
Et on crée le dépôt
1 2 |
cd /home/svn && svnadmin create /home/svn/user1 |
Et on démarre le serveur
1 |
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
1 |
nano /home/svn/user1/svnserve.conf |
Éditez le fichier de configuration et changer les lignes comme ci-dessous
1 2 3 |
[general] password-db = passwd authz-db = authz |
Fichier des mots de passe
Puis le fichier paswd
1 |
nano /home/svn/user1/passwd |
Et on spécifie l’utilisateur et le mot de passe comme ci-dessous
1 2 |
[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
1 2 |
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
1 |
sudo nano /home/svn/user1/authz |
Et on donne les droits maximum à l’utilisateur user1
1 2 |
[/] user1 = rw |
Installer le script de démarrage
On quitte l’utilisateur svn
1 |
exit |
Puis on édite le fichier de configuration systemctl
1 |
sudo nano /etc/systemd/system/svnserve.service |
Éditez le fichier de configuration et changer les lignes comme ci-dessous
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[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
1 |
sudo nano /etc/default/svnserve |
On remplit le fichier ainsi
1 2 |
# 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
1 2 |
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
1 |
sudo nano /etc/logrotate.d/svnserve |
On remplit le fichier ainsi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/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
1 2 3 |
sudo systemctl daemon-reload && sudo systemctl start svnserve.service && sudo systemctl enable svnserve |
On vérifie l’état du système
1 |
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
1 2 3 4 5 6 7 8 |
● 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
1 |
svnadmin -q dump /home/svn/user1 > /backup/svn/user1.svndump |
Restaurer son dépôt
1 2 |
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
1 2 3 |
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