Subversion · 4 min read · Jan 02, 2026

Configuration d'un dépôt Subversion avec Apache, avec une copie de travail auto-mise à jour - Page 2

Création d’un dépôt :

Supposons que je veuille créer un dépôt à /usr/local/subversion/repository en utilisant une base de données fsfs, donc exécutez la commande :

mkdir -v /usr/local/subversion/
/usr/bin/svnadmin create --fs-type fsfs /usr/local/subversion/repository

Cela devrait créer un dépôt subversion sous /usr/local/subversion/repository.

ls /usr/local/subversion/repository
conf/  dav/  db/  format  hooks/  locks/  README.txt

Vous devriez être en mesure de voir ces fichiers sous le répertoire du dépôt.

Configuration de httpd.conf pour servir le dépôt créé :

Ajoutez les lignes suivantes à httpd.conf ou au fichier de configuration apache approprié.



  DAV svn

  SVNPath /usr/local/subversion/repository/

Assurez-vous que le module mod_dav est chargé dans le fichier de configuration apache et est également présent sous le répertoire des modules.

Configuration de l’authentification :

Pour l’authentification, nous devons apporter des modifications à la configuration apache encore une fois.

L’authentification de base nécessite que nous ajoutions simplement les lignes suivantes à httpd.conf où nous avons ajouté le dépôt svn plus tôt.

AuthType Basic

AuthName "{Nom de l'onglet popup d'authentification}"

AuthUserFile {Emplacement du fichier de mot de passe}

Require valid-user

Donc, cela devrait ressembler à ceci.



  DAV svn

  SVNPath /usr/local/subversion/repository/

  AuthType Basic

  AuthName "Dépôt Subversion"

  AuthUserFile /usr/local/subversion/repository/conf/svn-auth-file

  Require valid-user

Il est nécessaire que nous ajoutions des utilisateurs au fichier de mot de passe avant que quiconque puisse y accéder, ce qui est décrit dans l’étape suivante.

Ajout d’utilisateurs SVN :

Puisque nous utilisons svn avec un serveur apache, et une méthode d’authentification de base apache.

Nous devons créer un fichier de mot de passe avec le binaire htpasswd fourni avec une installation apache standard.

htpasswd -cmd /usr/local/subversion/repository/conf/svn-auth-file {nom-utilisateur}

L’option -c crée un nouveau fichier htpasswd.

-m chiffre le mot de passe avec un algorithme MD5.

d chiffre le mot de passe avec un algorithme CRYPT.

Où {nom-utilisateur} représente un nom d’utilisateur réel qui sera utilisé pour l’authentification.

Avertissement : Nous ne devrions pas utiliser l’option -c une fois que nous avons ajouté le premier utilisateur. L’utiliser ainsi créera et remplacera tous les utilisateurs existants dans le fichier.

htpasswd -md /usr/local/subversion/repository/conf/svn-auth-file {nom-utilisateur}

Configuration de la mise en page initiale du dépôt :

Un dépôt contient principalement 3 dossiers standard.

branches
tags
trunk

Pour créer ces dossiers standard dans un dépôt, créez un dossier temporaire où vous le souhaitez, /tmp serait une bonne idée, avec les sous-répertoires suivants.

mkdir -pv /tmp/subversion-layout/{branches,tags}

Après avoir créé tous les dossiers de mise en page, déplacez tout le contenu de votre projet vers le dossier trunk.

mv -v /usr/local/apache2/htdocs /tmp/subversion-layout/trunk

Ensuite, faites une importation initiale du répertoire temporaire créé.

/usr/local/subversion/bin/svn import /tmp/subversion-layout/ http://127.0.0.1/subversion/

Cela vous configurera avec une mise en page de dépôt par défaut et fera une première révision.

Configuration d’une copie de travail :

Nous pouvons supprimer les dossiers temporaires que nous avons créés à l’étape précédente, puisque tous les fichiers sont déjà dans le dépôt.

Maintenant, ce que nous devons faire est de faire une copie de travail de tous les fichiers dans le dépôt sous /usr/local/apache2/htdocs.

Ainsi, chaque fois qu’un développeur met à jour les codes php, il peut voir les modifications de code prendre effet dans un environnement de travail.

Mais configurer une copie de travail ne réaliserait pas cette tâche, nous devrions faire fonctionner les scripts de hook avec une copie de travail.

Ainsi, chaque fois qu’un développeur s’engage dans le dépôt, le script de hook s’exécutera et mettra à jour la copie de travail.

Assurez-vous que le dossier htdocs sous /usr/local/apache2/ n’existe pas déjà.

Si vous le souhaitez, vous pouvez le renommer en htdocs_old.

Pour configurer une copie de travail, faites ce qui suit.

cd /usr/local/apache2/
su – apache
/usr/local/subversion/bin/svn checkout http://127.0.0.1/subversion/trunk/ htdocs

Configuration des scripts de hook :

Un hook est un programme déclenché par un événement de dépôt, tel que la création d’une nouvelle révision ou la modification d’une propriété non versionnée. Chaque hook reçoit suffisamment d’informations pour indiquer quel est cet événement, sur quelle(s) cible(s) il opère, et le nom d’utilisateur de la personne qui a déclenché l’événement. En fonction de la sortie ou du statut de retour du hook, le programme de hook peut continuer l’action, l’arrêter ou la suspendre d’une certaine manière.

Le sous-répertoire hooks est, par défaut, rempli de modèles pour divers hooks de dépôt.

post-commit.tmpl          post-unlock.tmpl          pre-revprop-change.tmpl
post-lock.tmpl            pre-commit.tmpl           pre-unlock.tmpl
post-revprop-change.tmpl  pre-lock.tmpl             start-commit.tmpl

Pour l’instant, je vais discuter du script de hook post-commit, car c’est ce dont nous avons besoin dans notre cas.

Copiez le fichier post-commit.tmpl dans post-commit dans le même répertoire hooks, et donnez des droits d’exécution à post-commit.

cp -v /usr/local/subversion/repository/hooks/post-commit.tmpl /usr/local/subversion/repository/hooks/post-commit
chmod +x /usr/local/subversion/repository/hooks/post-commit

Maintenant, éditez le script post-commit et commentez les deux lignes suivantes en bas, et ajoutez la ligne suivante.

#commit-email.pl "$REPOS" "$REV" [email protected]

#log-commit.py --repository "$REPOS" --revision "$REV"

/usr/bin/svn update /usr/local/apache2/htdocs/ >> /usr/local/subversion/repository/logs/post-commit.log

Après cela, créez un nouveau dossier logs, sous /usr/local/subversion/ afin que nous puissions activer la journalisation, et créez un fichier post-commit.log vide.

mkdir -v /usr/local/subversion/repository/logs/
touch /usr/local/subversion/repository/logs/post-commit.log

Encore une fois, nous devons nous assurer que le dossier du dépôt a la propriété utilisateur appropriée, il est conseillé de définir la propriété sur /usr/local/subversion/repository/ pour l’utilisateur apache.

chown -Rv apache.apache /usr/local/subversion/repository/

Si tout se passe bien, cela devrait être tout.

Vous avez maintenant un serveur de dépôt subversion fonctionnel prêt pour de nouvelles importations, dès que vous démarrez le serveur apache.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.