Subversion : installation CentOS - BlueOnyx

De wikiGite

Installation - configuration

Subversion et mod_dav_svn sont déjà installés sur BlueOnyx. Sinon, les installer par

yum install mod_dav_svn subversion

Créer un virtualhost pour Subversion. Créer dans le répertoire de ce vitualhost un répertoire "svn" (si possible ailleurs que dans le répertoire DocumentRoot du virtualhost, pour ne pas mélanger). Exemple :

cd /home/.sites/33/site5
mkdir svn

Editer le fichier /etc/httpd/conf.d/subversion.conf. Il doit ressembler à ça :

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos/>
   DAV svn
   SVNParentPath /home/.sites/33/site5/svn/

      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthName "Subversion repository"
      AuthUserFile /home/.sites/33/site5/svn/htpasswd
      AuthzSVNAccessFile /home/.sites/33/site5/svn/acls
      Require valid-user
   # Limit write permission to list of valid users.
   #<LimitExcept GET PROPFIND OPTIONS REPORT>
   #</LimitExcept>
</Location>

On ne s'occupera pas du SSL ici, mais on peut sécuriser les dépôts SVN en activant la directive SSLRequire.

La sécurité est assuré par l'authentification des utilisateurs. Elle s'effectue à 2 niveaux :

  • Apache authentifie l'utilisateur (login/mot de passe)
  • SVN donne des autorisations à l'utilisateur (lecture et/ou écriture sur les différents dépôts)

Pour l'authentification, créer un fichier de mots de passe par

htpasswd -c /home/.sites/33/site5/svn/htpasswd user1

Par la suite, l'ajout d'autres utilisateurs se fera par

htpasswd -m /home/.sites/33/site5/svn/htpasswd user2

Créer ensuite le fichier des autorisations. Modèle :

# SVN ACL access file
[groups]
# harry_and_sally = harry,sally

# Autorisations globales pour tous les dépôts
[/]
user1 = rw
user2 = r
# Group permissions :
# @harry_and_sally = rw
# Decommenter ci-dessous pour autoriser tout le monde a voir le dépôts
# * = r

# Autorisations specifiques à certains dépôts
# [nom_du_depot:/]
# user3 = r
# * = r

Finalement, relancer apache

service httpd start

Utilisation

Création d'un projet

svnadmin create /home/.sites/33/site5/svn/projettest

Pour éviter les problèmes de droits, changer le propriétaire des fichiers créés par svnadmin

chown -R apache /home/.sites/33/site5/svn/projettest

Pour importer les premiers fichiers à partir d'une arborescence locale d'un poste de travail

svn import /tmp/projettest/ http://<URL_DU_VIRTUALHOST>/repos/projettest -m "Projet test initial" --username user1

Par la suite, la mise à jour du poste local à partir du serveur se fait par :

svn co http://<URL_DU_VIRTUALHOST>/repos/projettest projettest --username user1

Et l'envoi de modifications du poste vers le serveur se fait par

  • Mise à jour de fichiers modifiés
svn commit ./projettest --username user1
  • Ajout d'un nouveau fichier
svn add ./projettest/main/file2.php

La validation du nouveau fichier se fait par la même commande "svn commit..." que ci-dessus.