Subversion

Subversion est un système de contrôle de version libre. 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 dans un terminal :

sudo apt install subversion apache2 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 un terminal :

svnadmin create /path/to/repos/project

Importation des fichiers

Dès que vous avez créé le dépôt vous pouvez importer des fichiers dans le dépôt. Pour importer un dossier, saisissez dans un terminal :

svn import /chemin/vers/dossier/concerné file:///chemin/vers/depot/projet/

Méthodes d'accès

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

Méthodes 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 chiffrement SSL

svn://

Accès via un protocole 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

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 droits d'accès au dépôt dépendent de ceux 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://)

To access the Subversion repository via WebDAV protocol, you must configure your Apache 2 web server. Add the following snippet between the <VirtualHost> and </VirtualHost> elements in /etc/apache2/sites-available/000-default.conf, or another VirtualHost file:

 <Location /svn>
  DAV svn
  SVNParentPath /chemin/vers/dépôt
  AuthType Basic
  AuthName "Votre nom de dépôt"
  AuthUserFile /etc/subversion/passwd
  Require valid-user
 </Location> 

Le fragment de configuration ci-dessus suppose que les dépôts Subversion sont créés dans le répertoire /chemin/vers/dépôt/filename> en utilisant la commande svnadmin et que l'utilisateur HTTP a les droits d’accès à ces fichiers (voir ci-dessous). Ils peuvent être accessibles en utilisant l'url http://hostname/svn/nom_du_dépôt.

Changer la configuration apache comme ci-dessus nécessite le rechargement du service avec la commande suivante

    sudo systemctl reload apache2.service

To import or commit files to your Subversion repository over HTTP, the repository should be owned by the HTTP user. In Ubuntu systems, the HTTP user is www-data. To change the ownership of the repository files enter the following command from terminal prompt:

    sudo chown -R www-data:www-data /chemin/vers/dépôt

Si vous modifiez le propriétaire du dépôt en www-data vous ne pourrez plus importer ou renvoyer des fichiers dans le dépôt en exécutant la commande svn import file:/// en tant qu'utilisateur différent de www-data.

Ensuite, vous devez créer le fichier /etc/subversion/passwd qui contiendra les détails d'authentification des utilisateurs. Pour cela, saisissez la commande suivante dans une invite de terminal (ce qui créera le fichier et ajoutera le premier utilisateur) :

sudo htpasswd -c /etc/subversion/passwd nom_utilisateur

Pour ajouter d'autres utilisateurs, omettez l'option « -c » car celle-ci remplace l'ancien fichier. Utilisez à la place cette formulation :

sudo htpasswd /etc/subversion/passwd nom_de_lutilisateur

Cette commande vous demande de saisir le mot de passe. Une fois le mot de passe saisi, 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

Le mot de passe est transmis en clair, comme texte simple. Si vous craignez que des fouineurs récupèrent votre mot de passe, nous vous conseillons d'utiliser un chiffrement par SSL. Pour plus d'information, veuillez consulter la section suivante.

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

Accessing Subversion repository via WebDAV protocol with SSL encryption (https://) is similar to http:// except that you must install and configure the digital certificate in your Apache2 web server. To use SSL with Subversion add the above Apache2 configuration to /etc/apache2/sites-available/default-ssl.conf. For more information on setting up Apache2 with SSL see Configuration HTTPS.

Vous pouvez installer un certificat numérique signé par une autoité de certification. Sinon, 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 modifier 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 des utilisateurs dans le fichier passwd. Modifiez 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 renseignements, 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 dans 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 protocole personnalisé avec chiffrement SSH (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://ssh_utilisateur@hôte/chemin/vers/dépôt/du/projet

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.