Installation SVN

De EjnTricks
Révision de 26 mai 2015 à 09:50 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Cet article présente l'installation de SVN sur une machine Ubuntu.

Hand-icon.png Votre avis

Current user rating: 81/100 (1 votes)

 You need to enable JavaScript to vote


System-Install-icon.png Installation initiale

L'installation s'effectue à l'aide de la commande suivante:

#sudo apt-get install subversion


Viewer icon.png Voir Aussi

Documentation officielle: http://trucatux.under-globe.net/index.php/post/2007/06/25/Installation-svn-ubuntu


Icon-Configuration-Settings.png Configuration

Cet article est inspiré de la documentation de Ubuntu: https://help.ubuntu.com/community/Subversion

Initialisation

Dans un premier temps, il est préférable de configurer les comptes, voir Gestion des comptes. Il faut créer le groupe subversion.

#sudo addgroup subversion

L'utilisateur www-data, utilisateur apache, est ajouté à ce groupe.

#sudo adduser www-data subversion

Il faut ensuite configurer le répertoire qui va recevoir le repository. Sur la machine, il est installer à la racine, sous /var/opt/svn

#cd /var/opt
#sudo mkdir svn
#sudo chown -R www-data:subversion svn
#sudo chmod -R g+rws svn

Run-icon.png Lancement du serveur

L'exposition des sources à l'aide de l'outil permet d'y accéder avec une connexion de type: svn//hostName/repos.

Le serveur SVN est démarré en mode daemon à l'aide de la commande:

#svnserve -d -r svn/

Il faut être dans le répertoire parent du répertoire svn, dans le cadre de cet exemple.

Installation daemon

Ce chapitre est inspiré de l'article: http://odyniec.net/articles/ubuntu-subversion-server. Afin que le serveur soit actif lors du démarrage de la machine, il faut créer un script placé dans /etc/init.d. Le script est nommé svnserve et le contenu est le suivant:

Dans ce script, il faut modifier la constante DAEMON_ARGS pour prendre en compte le répertoire racine de svn. L'installation du service s'effectue ensuite ainsi:

#sudo update-rc.d svnserve defaults
 Adding system startup for /etc/init.d/svnserve ...
   /etc/rc0.d/K20svnserve -> ../init.d/svnserve
   /etc/rc1.d/K20svnserve -> ../init.d/svnserve
   /etc/rc6.d/K20svnserve -> ../init.d/svnserve
   /etc/rc2.d/S20svnserve -> ../init.d/svnserve
   /etc/rc3.d/S20svnserve -> ../init.d/svnserve
   /etc/rc4.d/S20svnserve -> ../init.d/svnserve
   /etc/rc5.d/S20svnserve -> ../init.d/svnserve

Le serveur svn est démarré à l'aide de la commande:

#sudo /etc/init.d/svnserve start

L'arrêt s'effectue à l'aide de la commande

#sudo /etc/init.d/svnserve stop

Configuration-icon.png SVN sous Apache

Bug-icon.png Anomalies

Erreur commit

Lors d'une mise en place d'un dépôt, des erreurs peuvent apparaître si les permissions ne sont pas correctement mises en place sur les fichiers. Par exemple, lors d'une mise à disposition des sources, le message suivant a été observé, à partir du plugin SVN pour Eclipse.

org.tigris.subversion.javahl.ClientException: Attempted to write to readonly SQLite db
svn: Commit failed (details follow):
svn: attempt to write a readonly database

Le message indique la mise en lecture seule de la "base de données" de SVN. Pourtant les modifications sont bien sauvegardées. L'analyse du contenu du dépôt permet d'identifier les fichiers dont les permissions ne sont pas correctes.

#sudo ls -lR /var/opt/svn/study
-r--r----- 1 www-data subversion    2 2012-04-15 00:59 format
-rw-r----- 1 www-data subversion  229 2012-04-15 00:59 README.txt

/var/opt/svn/study/conf:
total 24
drwxr-s--- 2 www-data subversion 4096 2012-04-15 19:15 ./
drwxr-s--- 7 www-data subversion 4096 2012-04-15 18:38 ../
-rw-r----- 1 www-data subversion 1750 2012-04-15 07:53 authz
-rw-r----- 1 root     subversion 1751 2012-04-15 01:28 authz.bak
-rw-r----- 1 root     subversion  330 2012-04-15 01:02 passwd
-rw-r----- 1 root     subversion 2277 2012-04-15 01:02 svnserve.conf

/var/opt/svn/study/dav:
total 12
drwxr-sr-x 3 www-data subversion 4096 2012-04-15 18:38 ./
drwxr-s--- 7 www-data subversion 4096 2012-04-15 18:38 ../
drwxr-sr-x 2 www-data subversion 4096 2012-04-15 20:09 activities.d/

/var/opt/svn/study/db:
total 80
drwxr-s--- 6 www-data subversion  4096 2012-04-15 20:09 ./
drwxr-s--- 7 www-data subversion  4096 2012-04-15 18:38 ../
-rw-r----- 1 www-data subversion     3 2012-04-15 20:09 current
-r--r----- 1 www-data subversion    22 2012-04-15 00:59 format
-rw-r----- 1 www-data subversion  1920 2012-04-15 00:59 fsfs.conf
-rw-r----- 1 www-data subversion     5 2012-04-15 00:59 fs-type
-rw-r----- 1 www-data subversion     2 2012-04-15 00:59 min-unpacked-rev
-rw-r--r-- 1 root     subversion 24576 2012-04-15 01:05 rep-cache.db
drwxr-s--- 3 www-data subversion  4096 2012-04-15 00:59 revprops/
drwxr-s--- 3 www-data subversion  4096 2012-04-15 00:59 revs/
drwxr-s--- 2 www-data subversion  4096 2012-04-15 20:09 transactions/
-rw-r----- 1 www-data subversion     3 2012-04-15 20:09 txn-current
-rw-r----- 1 www-data subversion     0 2012-04-15 00:59 txn-current-lock
drwxr-s--- 2 www-data subversion  4096 2012-04-15 20:09 txn-protorevs/
-rw-r----- 1 root     subversion    37 2012-04-15 01:04 uuid
-rw-r----- 1 www-data subversion     0 2012-04-15 00:59 write-lock

/var/opt/svn/study/hooks:
total 56
drwxr-s--- 2 www-data subversion 4096 2012-04-15 19:15 ./
drwxr-s--- 7 www-data subversion 4096 2012-04-15 18:38 ../
-rwxr-x--- 1 root     subversion   86 2012-04-15 01:02 post.commit*
-rw-r----- 1 www-data subversion 2022 2012-04-15 00:59 post-commit.tmpl
-rw-r----- 1 www-data subversion 1663 2012-04-15 00:59 post-lock.tmpl
-rw-r----- 1 www-data subversion 2344 2012-04-15 00:59 post-revprop-change.tmpl
-rw-r----- 1 www-data subversion 1592 2012-04-15 00:59 post-unlock.tmpl
-rwxr-x--- 1 root     subversion 4396 2012-04-15 01:02 pre-commit*
-rw-r----- 1 www-data subversion 3510 2012-04-15 00:59 pre-commit.tmpl
-rw-r----- 1 www-data subversion 2410 2012-04-15 00:59 pre-lock.tmpl
-rw-r----- 1 www-data subversion 2818 2012-04-15 00:59 pre-revprop-change.tmpl
-rw-r----- 1 www-data subversion 2100 2012-04-15 00:59 pre-unlock.tmpl
-rw-r----- 1 www-data subversion 2852 2012-04-15 00:59 start-commit.tmpl

/var/opt/svn/study/locks:
total 16
drwxr-s--- 2 www-data subversion 4096 2012-04-15 00:59 ./
drwxr-s--- 7 www-data subversion 4096 2012-04-15 18:38 ../
-rw-r----- 1 www-data subversion  139 2012-04-15 00:59 db.lock
-rw-r----- 1 www-data subversion  139 2012-04-15 00:59 db-logs.lock

Or le dépôt étant exposé sous Apache, il est nécessaire que le compte d'exécution du serveur, à savoir www-data, puisse accéder aux fichiers. Dans ce cas, le compte root est propriétaire des fichiers suivants:

  • /var/opt/svn/study/conf/authz.bak
  • /var/opt/svn/study/conf/passwd
  • /var/opt/svn/study/conf/svnserve.conf
  • /var/opt/svn/study/db/rep-cache.db
  • /var/opt/svn/study/db/uuid
  • /var/opt/svn/study/hooks/post.commit
  • /var/opt/svn/study/hooks/pre.commit

Pour certains fichiers, cela n'est pas nécessaire. Par soucis d'homogénéité, ils seront quand même tous modifiés.

#sudo chown -R www-data:subversion /var/opt/svn/study