La Case de l’Oncle Tom

Développement Web, bonnes pratiques et performances

Configurer Apache pour de multiples dépôts Subversion

J’ai commencé à faire joujou avec Subversion dans le but de versionner mes développements et y adjoindre l’excellent Trac pour gérer les projets, les incidents et la documentation. Seulement voilà, je pars dans une optique où chaque projet dispose de son propre dépôt Subversion pour me faciliter la vie dans les fusions et autres manipulations amenant à croiser de nombreux fichiers.

S’il me paraissait logique de créer chaque dépôt manuellement dans Subversion, ça l’était en revanche beaucoup moins pour le serveur Web Apache. Je souhaite en effet disposer d’un accès HTTP, pour tester les différents protocoles SVN entre autre. Flemme oblige, je n’avais vraiment pas envie de configurer également des alias et configurations de répertoires pour chaque dépôt.

Une fois de plus, la flemme a vaincu.

Après avoir lu des billets intéressants sur l’installation de Subversion sur Ubuntu ainsi que l’installation de Subversion sur Ubuntu ou Debian, je devais me rendre à l’évidence : pour chaque dépôt créé, il faut également modifier (à la main) le fichier de configuration d’Apache.

Directive DirectoryMatch

J’ai tenté de contourner le problème en utilisant la directive DirectoryMatch d’Apache mais impossible de récupérer le résultat du masque.
Si vous comptiez faire ceci, oubliez de suite, ce n’est pas possible :

<directorymatch "/chemin/vers/racine/svn/([a-z0-9-]*)>
 DAV svn
 SVNPath /chemin/vers/racine/svn/$1
 ...
</directorymatch>

En effet, DIrectoryMatch ne fait que vérifier l’existence d’un chemin par rapport à un masque ; il n’en récupère pas le contenu pour une exploitation ultérieure. C’est bien dommage.

Solution : SVNParentPath

Heureusement tout a été prévu (mais rarement mentionné). Au lieu d’utiliser SVNPath pour renseigner le chemin d’un seul dépôt, il vaut mieux utiliser SVNParentPath qui, lui, spécifie la racine des dépôts Subversion. En gros, tous les répertoires enfants à SVNParentPath sont considérés comme étant des dépôts (référentiels) indépendants.

Exactement ce qu’il me fallait.

Au final, après avoir cherché à configurer Subversion pour Windows, voici ce que j’ai rajouté dans ma config Apache :

<Location /svn>
  DAV svn
  # any /svn/foo URL will map to a repository D:/svn/foo
  SVNParentPath D:/svn

  #AuthType Basic
  #AuthName "Subversion repository"
  #AuthUserFile d:/svn/.htaccess
  #Require valid-user
</Location>

Je ferai très probablement d’autres billets sur Subversion. Depuis le temps que je voulais m’y mettre, apprendre ses rouages et sa rigueur ne sont pas forcément faciles.

Votre lecture de l'article Configurer Apache pour de multiples dépôts Subversion est terminée. Il y a encore plein de choses à lire ici ... vous voulez des idées ?

Commentaires & rétroliens

Il n'y a pas encore de commentaire ni de rétrolien. C'est le moment où jamais ;-)

Répondre

Balises HTML autorisées : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Thème graphique par LeslyG, intégré par Oncle Tom.
Propulsé par WordPress, Blueprint et WP-LESS.