Svn

De The Linux Craftsman
Aller à : navigation, rechercher
Serveur
Protocole tcp
Port 3690
Configuration Iptables iptables -I INPUT 2 -p tcp --dport 3690 -j ACCEPT

Introduction

Définition

Subversion (en abrégé svn) est un logiciel de gestion de versions, distribué sous licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient volontairement sur les mêmes concepts (notamment sur le principe du dépôt centralisé et unique) et considèrent que le modèle de CVS est bon, seule son implémentation est perfectible. Wikipedia

Principe

On a un serveur qui centralise toutes les données et tous les développeurs se connectent à ce serveur lorsqu'il veulent enregistrer ou récupérer une version d'un fichier.

  • L'enregistrement s'appelle COMMIT
  • La récupération s'appelle UPDATE
  • Lorsque deux développeurs travaillent sur le même fichier et que les deux COMMIT il y a CONFLIT
  • Un conflit se résout en effectuant un MERGE (enregistrement des modifications des deux développeurs)
  • Un enregistrement d'un fichier s'appelle une VERSION du fichier

Vous l'aurez compris, SVN est un outil qui permet le travail collaboratif mais, comme à chaque fois que l'on travaille en groupe, une certaine rigueur est à respecter !

Préparation

Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.

Pour ceux qui auraient manqué des étapes, les voici:

Une fois ces étapes effectuées, entrons dans le vif du sujet !

Installation

# yum -y install subversion mod_dav mod_dav_svn

Création d'un dépôt

La commande suivante permet de créer un dépôt SVN

# svnadmin create ${NOM_DU_DEPOT}

Remplacez ${NOM_DU_DEPOT} par le nom de votre dépôt et c'est fini !

Accès au dépôt

Tout d'abord, il faut faire un checkout du projet dans un répertoire que vous avez préalablement créé:

# svn co svn://${IP}/${NOM_DU_DEPOT}

Dans le répertoire vous devriez avoir les fichiers présent dans votre dépôt (ou rien si le dépôt est vide).

Ajout d'un fichier ou dossier

Lorsque vous voulez ajouter un fichier au dépôt, utilisez la commande suivante:

# svn add ${NOM_DU_FICHIER}

Validation des changements

A chaque fois que vous faites des changements, il faut faire un commit pour pousser les changement sur le dépôt:

#svn commit -m "Ajout du fichier ${NOM_DU_FICHIER}"

Accès Web avec HTTPD

La suite se déroule dans un fichier de configuration Apache (eg. /etc/httpd/conf.d/svn.conf).

Création d'un hôte

On doit créer un hôte virtuel pour s'occuper de notre dépôt SVN et ajouter à l'url svnroot de manière automatique:

<VirtualHost svn:80>
   ServerName svn.tala-informatique.fr
   RedirectMatch ^/$ /svnroot/
</VirtualHost>

Activation de la lecture SVN

Ensuite on a plus qu'à activer la lecture des sous-répertoire en mode DAV (base de données SVN):

<VirtualHost svn:80>
   ...

   <Location /svnroot>
      DAV svn
      SVNListParentPath On
      SVNParentPath /opt/SVNROOT
      <LimitExcept GET PROPFIND OPTIONS REPORT>
      </LimitExcept>
   </Location>
</VirtualHost>

Ici le répertoire racine SVN est /opt/SVNROOT mais vous pouvez adapter avec votre configuration.

Ajout d'un mot de passe

Il est intéressant de limiter l'accès à certaine branche de votre dépôt et vous pouvez faire cela grâce à un .htaccess et en ajoutant quelques lignes:

<VirtualHost svn:80>
   ...

   <Location /svnroot/projet1>
      AuthType Basic
      AuthName "Subversion de JCF"
      AuthUserFile /etc/subversion/jcf
      Require valid-user
   </Location>
</VirtualHost>