SVN¶
Introduction à SVN¶
SVN est un logiciel de gestion de version basé sur une architecture clients-serveur.

Le serveur:
Stocke et met à disposition des données.
Garde un historique de toutes les modifications effectuées sur les données stockées (on parle de versionning), cela permet de :
Revenir en arrière (annuler des modifications, retrouver des versions antérieures du projet)
Suivre les modifications (qui à fait quoi et quand)
Comparer les différences entre 2 versions
Facilite le travail collaboratif
Limite les problèmes lorsque plusieurs personnes éditent la même base de code.
Ce guide donne les bases de SVN et de son utilisation à travers l’interface graphique TortoiseSVN.
Principe¶
Le serveur stocke des dépôts (ou référentiel, ou repository). Un dépôt correspond généralement à un projet.
Lorsqu’un utilisateur récupère un dépôt il obtient une copie de travail, on dit qu’il fait un checkout. Normalement cette opération n’est réalisée qu’une seule fois par poste de travail.
La copie de travail n’est pas synchronisée automatiquement avec le dépôt.
Lorsque l’utilisateur a modifié sa copie locale et veut enregistrer ses modifications sur le serveur il doit faire une commit. Le numéro de version (ou révision) du dépôt est alors incrémenté de 1.
A l’inverse pour mettre à jour la copie de travail avec les dernières données stockées sur le serveur, l’utilisateur fait un update.
Checkout¶
Afin de récupérer un copie de travail depuis le dépôt, on va réaliser un checkout :
Dans l’explorateur de fichier: faites un clique droit sur le dossier où placer la copie de travail et cliquer sur SVN Checkout.
Renseignez l’adresse du dépôt dans le champ URL of repository et cliquez sur OK.
Etat de la copie locale¶
TortoiseSVN modifie les icones de l’explorateur de fichiers dans les copies locales.

Le symbole
indique que le fichier projet2011.pdf fait parti du dépôt et n’a pas été modifié localement.
Attention, une version plus récente peut nénamoins se trouver sur le serveur
Le symbole
indique que le fichier projet.tex fait parti du dépôt et a été modifié localement.
Attention, il faudra réaliser un commit pour enregistrer les modifications sur le serveur
L’absence de symbole indique que les fichiers projet.aux, projet.bbl… n’ai actuellement pas géré par SVN.
Ce n’est pas parce qu’un fichier est présent dans la copie de travail qu’il fait parti du dépôt. Par exemple, les résultats de compilations et fichiers temporaires ne font normalement pas parti des dépôts. Il n’y a aucun intérêt à sauvegarder ces fichiers sur le serveur mais ils sont présents dans le répertoire de la copie locale.
Commit¶
Pour sauvegarder les modifications de la copie locale sur le serveur, on fait un commit :
Cliquez droit sur le dossier de la copie locale et choisissez SVN Commit
Renseignez une description des modifications réalisées dans le champs Message
Vérifiez la liste des fichiers modifiés dans la section Changes made, cliquez sur OK.
Les fichiers qui ne sont pas sélectionnés ne seront pas mis sur le serveur !
Vérifiez le log:
Update¶
Pour récupérer la dernier version d’un dépôt sur la copie locale, on fait un update:
Cliquez droit sur le dossier de la copie locale et choisissez SVN Update.
Le log donne la liste des fichiers supprimés, déplacés, ajoutés et modifiés :
Règles d’usage¶
Comme il peut exister plusieurs copies locales d’un même dépôt, des conflits d’édition peuvent survenir si plusieurs personnes modifient simultanément le même fichier. Cette situation doit être évitée:
En s’accordant à l’avance sur la répartition du travail
En utilisant des mécanismes de verrouillage
SVN met en place des règles d’utilisation qui assure la cohérence des données sur le dépôt (mais pas sur les copies locales)
Ces règles sont résumés dans les tableaux ci-dessous:

On ne peut pas effectuer de commit si l’on ne possède pas la dernière version du dépôt : il faut alors faire un update avant de pouvoir réaliser le commit.¶

Si vous avez modifié un fichier et que quelqu’un d’autre à mis un nouvelle version de ce fichier sur le serveur, il y a un conflict d’édition. SVN va alors essayer de fusionner les 2 versions ou vous demander de réaliser la fusion vous même. Vous ne pourrez plus rien faire tant que le conflict d’édition en sera pas résolu.¶
Serveur SVN ESIEE¶
ESIEE Paris héberge un serveur SVN privé pour les projets étudiants accessible à l’adresse https://svnedu.esiee.fr .
Créer un dépôt¶
Pour créer un nouveau dépôt vous devez utiliser l’url fournie par le responsable du module d’enseignement (ou le nom du module) : pour le projet Space Invaders utilisez le lien https://svnedu.esiee.fr/index.php?module=3I_PR3 . Vous obtenez la fenêtre suivante

Entrez votre login et mot de passe ESIEE. Vous arrivez sur la page :

Si vous êtes plusieurs à devoir utiliser ce dépôt, chaque utilisateur doit rentrer son login et son mot de passe ESIEE. La personne qui vient de se loguer à l’étape précédente n’a pas besoin de ré-rentrer ses informations. Seuls les utilisateurs qui ont indiqués leur login et mot de passe pourront accéder au dépôt par la suite. Cliquez sur <em>Créer</em>. En cas de succès, un message s’affiche en haut à droite de la fenêtre :

Retrouver ses dépôts¶
Rendez-vous sur le site https://svnedu.esiee.fr et connectez-vous avec votre login/mot de passe ESIEE. Vous arrivez sur la page:

Les dépôts auxquels vous avez accès apparaissent dans la liste sous le titre <em>Mes dépôts</em>. Cliquez sur le nom d’un dépôt dans cette liste. Vous obtenez les informations sur ce dépôt à droite :

Exercice¶
Afin de vous familiariser avec SVN, effectuez les manipulations suivantes:
Créez un nouveau dossier appelé svn1 sur le bureau
Réalisez un checkout de votre dépôt dans ce dossier
A la racine de votre copie locale, créez un fichier truc.txt
Ajoutez ce fichier et ce dossier à votre dêpot
Réalisez un commit de svn1
Accédez à l’adresse de votre dépôt SVN à partir de votre navigateur Web : vérifiez que le fichier truc.txt est bien présent.
Créez un nouveau dossier appelé svn2 sur le bureau
Réalisez un checkout de votre dépôt dans ce dossier
Dans la copie svn1: ajoutez le texte machin dans le fichier truc.txt
Effectuez un commit de svn1
Vérifiez le contenu du fichier truc.txt dans svn2
Effectuez un update sur svn2 et re-vérifiez le contenu du fichier truc.txt
Supprimez le fichier truc.txt dans svn1
Effectuez un update de svn1 que se passe-t-il ?
Re-supprimez le fichier truc.txt dans svn1 en utilisant la commande delete de TortoiseSVN.
Effectuez un commit de svn1