Gestion des sources avec SVN (Subversion)

Introduction

Subversion est un logiciel de gestion de versions. Il a été conçu pour remplacer CVS mais il s’appuie sur les mêmes concepts (notamment sur le principe du dépôt centralisé et unique).
Mais qu’est ce qu’un système gestion de version?

C’est tout simplement un système permettant de travailler à plusieurs sur un ou plusieurs fichiers. Il va gérer les numéros de version automatiquement à chaque modification faite sur le fichier. Il permet notamment de signaler et résoudre les conflits lorsque deux modifications sont faites sur un même fichier en même temps.

Ce type de système est très utilisé dans le développement en équipe.

Tutoriel

Nous allons voir dans un premier temps comment installer SVN et mettre en place un dépôt (en anglais repository). Puis nous expliquerons ensuite les principes de bonne utilisation de SVN lorsqu’on développe un projet en équipe.
Afin de faciliter la lecture du tutoriel, nous avons expliqué les étapes spécifiques aux systèmes d’exploitation Ubuntu et Microsoft Windows 2000/XP/Vista dans deux parties séparées lorsque c’est nécessaire alors que lorsqu’il s’agit d’outils multi-plateforme comme Eclipse IDE, nous avons regroupé les instructions dans une partie commune.
Avant d’entamer ce tutoriel, vérifiez que vous avez bien les pré requis :

  • JDK installé sur votre machine.
  • Eclipse installé sur votre machine.

Sous Ubuntu

Le site communautaire français de Ubuntu explique en détail l’installation et la configuration de SVN sur la page suivante.

Téléchargement/installation Subversion

Voici la démarche à suivre pour télécharger/installer SVN.
Nous allons utiliser le gestionnaire de paquet qui va nous aider à installer SVN sans le moindre effort. Pour cela :

  1. Ouvrir une console
  2. Installer SVN en tapant la commande :
    sudo apt-get install subversion libsvn-java
  3. Saisir le mot de passe utilisateur
  4. Le gestionnaire de paquet va ensuite demander confirmation pour installer les paquets subversion, il suffit d’appuyer sur la touche de la lettre “O” du clavier puis “entrer”. subversion va se télécharger et s’installer sans que l’on ait à se soucier de quoi que ce soit.

Création du dépôt

Une fois SVN installé sur la machine, il faut ensuite créer un dépôt (ou repository en anglais) où l’on déposera tous les fichiers de notre projet. Pour ce tutoriel nous allons faire simple, en créant un dépôt sur la machine locale. Dans la pratique, un repository est en général créé sur un serveur Apache pour qu’il soit accessible à distance à l’ensemble d’une équipe de développement.

  1. On ouvre une console (en haut à gauche de l’écran, cliquer sur le menu Applications → Accessoires → Terminal).
  2. On créé un répertoire svn avec la commande suivante (en remplaçant user par votre nom d’utilisateur) :
    mkdir /home/user/svn
  3. On créé le dépôt (repository) dans le nouveau répertoire avec la commande suivante (en remplaçant user par votre nom d’utilisateur) :
    svnadmin create /home/user/svn

Sous Windows 2000/XP/Vista

Téléchargement/installation Subversion

Sous Windows, il faut télécharger et installer manuellement subversion. Le site officiel propose plusieurs produits pour utiliser subversion sous Windows, en ligne de commande ou avec une interface graphique. Ils sont disponibles sur la page suivante.
Pour faire simple dans ce tutoriel, nous allons préférer l’utilisation de Totoise SVN qui rajoute au menu contextuel de Windows toutes les fonctionnalités de SVN rendant la gestion d’un dépôt très facile.

  • On commence par télécharger Tortoise SVN (Pour savoir si vous possédez une version 32 ou 64 bits de Windows il suffit d’utiliser le raccourci clavier touche Windows + Pause attn qui fera apparaitre la fenêtre Système qui indique quelle version de Windows est installé sur votre ordinateur).
  • On installe ensuite notre amie la tortue en lançant l’exécutable téléchargé.
  • Pour vérifier l’installation on lance l’explorateur Windows (raccourci Windows + E). Puis on fait un clic droit sur n’importe quel fichier. On devrait alors voir apparaitre dans le menu contextuel un sous menu Tortoise SVN.

Création du dépôt

Une fois SVN installé sur la machine, il faut ensuite créer un dépôt (ou repository en anglais) ou l’on déposera tous les fichiers de notre projet. Pour ce tutoriel nous allons faire simple, en créant un dépôt sur la machine locale. Dans la pratique, un repository est en général créé sur un serveur Apache pour qu’il soit accessible à distance à l’ensemble d’une équipe de développement.

    1. On lance l’explorateur Windows (raccourci clavier Windows + E)
    2. On créé un nouveau répertoire nommé svn en faisant un clic droit nouveau → Dossier

  1. On fait un clic droit sur le nouveau répertoire créé et on fait Tortoise SVN → Create repository here

Utiliser SVN avec Subversive dans Eclipse

Installation du plugin Subversive dans Eclipse

Maintenant que l’on a créé notre dépôt vide en local, nous allons devoir nous y connecter pour y déposer un projet. Pour cela nous allons utiliser un plugin sous Eclipse.
Il existe plusieurs plug-ins pour intégrer SVN à Eclipse. Nous allons pour ce tutoriel installer le plug-in subversive.
La démarche pour installer le plugin subversive dans Eclipse est décrite sur la page suivante.

Pour des raisons de licence, subversive est partagé entre deux dépôts. Un pour le plugin Subversive et un pour la partie “Connector” avec svn. Il faut donc ajouter les deux dépôts en suivant les instructions ci dessous :

  • On lance Eclipse
  • On clique sur le menu Help → Software Updates…
  • Dans la nouvelle fenêtre Software Updates and Add-ons on clique sur l’onglet Available Software
  • On clique ensuite sur le bouton Add site… et on colle l’url suivante :
  • http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/
  • On Valide en cliquant sur OK
  • Le nouveau site apparaît alors dans la liste de la fenêtre Software Updates and Add-ons
  • Un nouveau site apparaît alors avec comme adresse http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ ou avec le nom Subversive SVN Connectors Site.
  • Procédez de la même façon pour rajouter le site du plugin : http://download.eclipse.org/technology/subversive/0.7/update-site/
  • Un nouveau site apparait alors avec comme adresse http://download.eclipse.org/technology/subversive/0.7/update-site/ ou avec le nom Subversive Site.
  • On coche ensuite les composants correspondants à la copie d’écran ci dessous.
  • Suivant la version d’eclipse vous n’aurez pas la même fenêtre et si c’est le cas alors au lieu de faire installer faite Next.

  • On lance ensuite l’installation de tous ces plug-ins en cliquant sur Install….
  • Une fois l’installation achevée, Eclipse va vous proposer de se relancer, on accepte et lorsque Eclipse a redémarré nous allons pouvoir passer à l’étape suivante.

Nous sommes maintenant prêts pour utiliser subversion dans Eclipse. Dans un premier temps nous allons indiquer à Eclipse où se trouve le dépôt que nous avons créé précédemment. Nous partagerons ensuite un projet sur notre dépôt SVN. Et on verra enfin quels sont les principes de bonne utilisation de SVN lorsqu’on développe un projet en équipe.

Déclarer l’emplacement d’un dépôt

  1. Pour cela il faut ouvrir la vue Référentiels SVN : aller dans le menu Open Perspective -> Other -> SVN Repository
  2. Dans le nouvel onglet Référentiel SVN qui est apparu, on fait clic droit Nouveau → Repository Location
  3. Dans la nouvelle fenêtre Nouvel Emplacement du Référentiel nous allons :
    • Indiquer l’url du dépôt (en remplaçant user par votre nom d’utilisateur) : file:///home/user/svn
    • Saisir votre login/password de votre compte utilisateur de la session avec laquelle vous avez créé le dépôt SVN auparavant, et cocher la case Enregistrer le Mot de passe si vous voulez éviter de devoir le retaper à chaque opération sur le dépôt.
    • Cliquer sur Finish.


Un nouveau référentiel devrait alors apparaître dans la vue. Nous allons ensuite créer la structure recommandée par Subversion (branches tags trunk) pour notre projet.

  • Clic droit sur le référentiel : Nouveau → Structure de Projet…

  • On sélectionne Disposition Monolithique et on valide en cliquant sur OK


Le dépôt est maintenant correctement organisé pour qu’on y dépose un projet.

Partager un projet sur un dépôt

  • On créé un nouveau projet. Pour cela on ouvre le menu File → New → Java Project.
  • La fenêtre de wizard apparaît alors. Nous allons simplement indiquer ici le nom du projet dans le champ Project name : sf-tutorial-svn
  • On peut ensuite cliquer sur Finish. Le projet apparait alors dans l’onglet Package Explorer qui répertorie les différents projets du workspace.
  • On fait ensuite un clic droit à la racine du nouveau projet vide puis on va dans Team → Partager Projet…
  • Une nouvelle fenêtre pour partager le projet sur un dépôt apparait, il suffit de suivre les 3 étapes comme détaillé ci dessous
  • Sélectionner le repository

    • Spécifier le nom du projet sur le dépôt

  • Spécifier les fichiers qu’on souhaite déposer sur le dépôt (à noter qu’en général on ne partage que les fichiers sources, le reste des fichiers peuvent être souvent source de conflits entre les différents membre de l’équipe de développement).

Apprendre à travailler avec SVN sur un projet Eclipse

Pour réaliser ce tutoriel vous êtes seul. Or tout l’intérêt de Subversion est de permettre le travail en équipe sur un ensemble de fichiers (par exemple, ici notre projet).

Nous allons donc pour illustrer l’utilisation de SVN tout d’abord créer une classe dans notre projet puis la partager sur le dépôt. On simulera ensuite un autre développeur qui aurait modifié la classe afin de voir tous les mécanismes de SVN.
Lorsqu’on développe un projet en équipe, il faut avoir un certain nombre de bons réflexes.

Mettre à jour avant de commencer à travailler

Une bonne habitude à prendre est de mettre à jour sa version locale du projet régulièrement. Par exemple, on peut mettre à jour son projet au minimum avant chaque session de travail afin d’avoir la dernière version des fichiers susceptibles d’avoir été modifiés par d’autres membres de l’équipe entre temps. Cela nous assure qu’on va commencer à travailler sur la dernière version du projet.

Il suffit de faire un clic droit sur le projet dans le Package Explorer pour ouvrir le menu contextuel et aller dans Team → Mettre à jour. Eclipse va alors télécharger tous les fichiers du dépôt dans le projet en local.
Il existe aussi l’option Override and update traduite en français par Surcharger et l’option mettre à jour qui écrase toutes les modifications faites en local au profit des modifications validées sur le dépôt.

Synchroniser son travail en local avec le repository

Maintenant que l’on a une version à jour du projet nous allons pouvoir commencer à travailler. Pour faire simple, notre travail se résume à créer la classe TutorialSVN :

  • clic droit sur le répertoire src du projet sf-tutorial-svn, New → Class.
  • On indique comme package com.scub.foundation.tutorial.svn, comme nom TutorialSVN et on coche public static void main(String[] args).
  • On valide en cliquant sur Finish.

On remarque alors qu’un point d’interrogation apparait dans le Package Explorer sur la nouvelle classe. Cela signifie que le fichier récemment créé n’est pas partagé sur le dépôt.
Il va falloir maintenant valider les modifications qu’on vient d’apporter au projet. Seulement il faut prendre en compte que pendant le temps que l’ont a passé à faire ce travail, un autre membre de l’équipe a pu lui aussi apporter des modifications au projet.
C’est pourquoi nous allons utiliser la fonctionnalité Synchronise with Repository traduite en français par Synchroniser avec le référentiel pour valider notre travail :

  • Dans le Package Explorer, on fait un clic droit sur le projet puis on va dans Team → Synchroniser avec le référentiel
  • La perspective Team synchronizing est alors ouverte. Elle nous permet de voir à la fois les modifications sortantes (la création de notre nouvelle classe) et les entrantes (modifications éventuelles apportées par d’autres membres de l’équipe)


Il n’y a aucun conflit, on peut donc valider (en anglais, commit) l’ensemble du projet :

  • On clic droit sur notre projet puis on va dans Valider…
  • Une nouvelle fenêtre s’ouvre, comme ci dessous :

  • On met un commentaire pour expliquer à quoi correspond le travail que l’on valide sur le dépôt.
  • On vérifie que tous les fichiers qu’on souhaite valider soient bien cochés dans la liste.
  • On valide en cliquant sur OK

Et voilà nous avons validé notre travail sur le dépôt. Tous les autres membres de l’équipe peuvent maintenant profiter des modifications que nous avons apporté au projet.
En cas de conflit entre des fichiers, cette perspective permet de comparer les différences entre le fichier en local, et le fichier sur le dépôt.