Subversion

Subversion est un système de contrôle de version open source. En utilisant Subversion, vous pourrez enregistrer l'historique des fichiers sources et des documents. Il gère les fichiers et les répertoires dans le temps. Une arborescence des fichiers est placée dans un dépôt centralisé. Ce dépôt est à peu près identique à un serveur de fichier ordinaire, sauf qu'il conserve une trace de chaque changement effectué sur les fichiers et les répertoires.

Installation

Pour fournir l'accès à un dépôt Subversion en utilisant le protocole HTTP, vous devez installer et configurer un serveur web. Il s'avère qu'Apache2 fonctionne avec Subversion. Reportez vous à la section HTTP de la rubrique Apache2 pour installer et configurer Apache2. Pour fournir l'accès à un dépôt Subversion en utilisant le protocole HTTPS, vous devez installer et configurer un certificat numérique sur votre serveur web Apache2. Reportez vous à la section HTTPS de la rubrique Apache2 pour installer et configurer un certificat numérique.

Pour installer Subversion, utilisez la commande suivante à l'invite d'un terminal :

sudo apt-get install subversion libapache2-svn

Configuration du serveur

Ces étapes supposent que vous ayez installé sur votre système les paquets mentionnés ci-dessus. Cette section explique comment créer un dépôt Subversion et accéder au projet.

Créer un dépôt Subversion

Le dépôt Subversion peut être créé en utilisant la commande suivante dans une console :

svnadmin create /path/to/repos/project

Modes d'accès

Les dépôts Subversion sont accessibles (vérifiés) par de nombreuses méthodes différentes, sur un disque local, ou au travers de protocole réseau divers. L'emplacement d'un dépôt est cependant, toujours une URL. Le tableau indique comment les différents schémas d'URL sont reliés aux méthodes d'accès disponibles.

Tableau 13.1. Modes d'accès

Schéma

Méthode d'accès

file://

accès direct au dépôt (sur disque local)

http://

Accès via le protocole WebDAV au serveur web Apache2 fournissant Subversion

https://

Identique à http://, mais avec un cryptage SSL

svn://

Accès via un protocol personnalisé à un serveur svnserve

svn+ssh://

Identique à svn://, mais au travers d'un tunnel SSH


Dans cette section, nous verrons comment configurer Subversion pour toutes ces méthodes d'accès. Nous voyons ici les bases. Pour une utilisation plus avancée, référez-vous au svn book (NdT : livre non traduit en français pour l'heure).

Accès direct au dépôt (file://)

C'est la plus simple des méthodes d'accès. Elle ne nécessite aucun serveur Subversion pour être exécutée. Cette méthode d'accès est utilisée lors d'un accès Subversion depuis la même machine. La syntaxe de la commande, saisie dans un terminal, est la suivante :

svn co file:///chemin/vers/depot/nomduprojet

ou

svn co file://localhost/chemin/vers/depot/nomduprojet

[Note]

Si vous ne spécifiez pas le nom d'hôte, il y a trois barres obliques (///), deux pour le protocole (file, dans ce cas) plus la première barre oblique de l'arborescence des fichiers. Si vous spécifiez le nom d'hôte, vous devez utiliser deux barres obliques (//).

Les permissions du dépôt dépendent des permissions du système de fichiers. Si l'utilisateur a les droits d'accès en lecture et écriture, alors il peut extraire et déposer des fichiers sur le serveur.

Accès par le protocole WebDAV (http://)

Pour accéder au dépôt Subversion en utilisant le protocole WebDAV, vous devez configurer votre serveur web Apache 2. Vous devez ajouter les fragments de code suivants dans votre fichier /etc/apache2/apache2.conf :

 <Location /svn>
  DAV svn
  SVNPath /chemin/vers/dépôt
  AuthType Basic
  AuthName "Nom du dépôt"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location> 

Ensuite, vous devez créer le fichier /etc/subversion/passwd. Ce fichier contient les informations d'authentification des utilisateurs. Pour ajouter une entrée, par exemple ajouter un utilisateur, vous pouvez exécuter la commande suivante dans un terminal :

htpasswd2 /etc/subversion/passwd nom_utilisateur

Cette commande vous demande de saisir le mot de passe. Une fois le mot de passe entré, l'utilisateur est ajouté. Dès lors, pour accéder au dépôt, vous pouvez utiliser la commande suivante :

            
              svn co http://nomduserveur/svn
            
          
[Avertissement]

Le mot de passe est transmis en clair, comme texte simple. Si vous craignez les fureteurs de mot de passe, nous vous conseillons d'utiliser un chiffrement par SSL. Pour plus d'information, veuillez-vous référer à la section suivante.

Accès par le protocole WebDAV avec un chiffrement SSL (https://)

Accéder au dépôt Subversion via le protocole WebDAV avec un chiffrement par SSL ( https:// ) est similaire à http:// sauf que vous devez installer et configurer un certificat numérique sur votre serveur web Apache2.

Vous pouvez installer un certificat numérique émis par une autorité de certification comme Verisign. Autrement, vous pouvez installer votre propre certificat auto-signé.

Cette étape suppose que vous avez installé et configuré un certificat numérique sur votre serveur web Apache2. Maintenant, pour accéder au dépôt Subversion, veuillez vous référer à la section ci-dessus ! Les méthodes d'accès sont exactement les mêmes, hormis le protocole. Vous devez utiliser https:// pour accéder au dépôt Subversion.

Accès via un protocole personnalisé (svn://)

Une fois le dépôt Subversion créé, vous pouvez configurer le contrôle d'accès. Vous pouvez éditer le fichier /path/to/repos/project/conf/svnserve.conf pour cela. Par exemple, pour activer l'authentification, vous pouvez décommenter les lignes suivantes dans le fichier de configuration :

# [general]
# password-db = passwd

Après avoir décommenté ces lignes, vous pouvez gérer la liste d'utilisateurs dans le fichier passwd. Éditez donc le fichier passwd dans le même répertoire et ajoutez le nouvel utilisateur. La syntaxe se présente ainsi :

username = password

Pour plus de détails, référez-vous au fichier.

Maintenant, pour accéder à Subversion via le protocole personnalisé svn://, soit de la même machine, soit d'une autre, vous pouvez exécuter svnserver en utilisant la commande svnserve. La syntaxe se présente ainsi :

$ svnserve -d --foreground -r /path/to/repos
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve

For more usage details, please refer to:
$ svnserve --help

Une fois la commande exécutée, Subversion démarre en écoutant le port par défaut (3690). Pour accéder au dépôt du projet, vous devez exécuter la commande suivante depuis un terminal :

svn co svn://nom_hote/projet project --username nom_utilisateur

Suivant la configuration du serveur, il vous demande un mot de passe. Une fois que vous vous êtes authentifié, il vérifie le code sur le dépôt Subversion. Pour synchroniser le dépôt du projet avec votre copie locale, vous pouvez exécuter la sous-commande update. La syntaxe de cette commande, saisie dans un terminal, est la suivante :

cd répertoire_du_projet ; svn update

Pour plus d'informations sur l'utilisation de chaque sous-commande de Subversion, vous pouvez vous référer au manuel. Par exemple, pour en savoir plus sur la commande co (checkout), exécutez la commande suivante dans un terminal :

            
              svn co help
            
          

Accès par un protocole personnalisé avec un chiffrement SSL (svn+ssh://)

La configuration et le processus du serveur est le même que pour la méthode svn://. Pour plus de détails, veuillez vous référer au chapitre précédent. Dans cette étape, nous supposons que vous avez suivi l'étape précédente et que vous avez démarré le serveur Subversion en utilisant la commande svnserve.

De même, nous supposons que le serveur ssh s'exécute sur cette machine et que les connexions entrantes y sont autorisées. Pour vous en assurer, essayez de vous connecter à la machine en utilisant ssh. Si vous pouvez vous identifier, alors tout est parfait. Si vous ne pouvez pas vous identifier, résolvez le problème avant de continuer.

Le protocole svn+ssh:// est utilisé pour accéder au dépôt Subversion en utilisant un chiffrement SSL. Le transfert de données est chiffré en utilisant cette méthode. Pour accéder au dépôt du projet (pour une vérification par exemple), vous devez utiliser la syntaxe suivante :

svn co svn+ssh://hostname/var/svn/repos/project

[Note]

Vous devez utiliser le chemin complet (/chemin/vers/dépôt/projet) pour accéder au dépôt Subversion en utilisant cette méthode d'accès.

Suivant la configuration du serveur, il vous demande un mot de passe. Vous devez saisir le mot de passe que vous utilisez pour vous identifier via ssh. Une fois que vous vous êtes authentifié, il vérifie le code sur le dépôt Subversion.