SVN

Introduction à SVN

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

../_images/archiSVN.png

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 :

  1. Dans l’explorateur de fichier: faites un clique droit sur le dossier où placer la copie de travail et cliquer sur SVN Checkout.

    ../_images/menuCheckout.png
  2. Renseignez l’adresse du dépôt dans le champ URL of repository et cliquez sur OK.

    ../_images/checkoutFenetre.png

Etat de la copie locale

TortoiseSVN modifie les icones de l’explorateur de fichiers dans les copies locales.

../_images/explorateurDepot.png
  • Le symbole nonmodifie 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 modifie 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 :

  1. Cliquez droit sur le dossier de la copie locale et choisissez SVN Commit

    ../_images/commitMenu.png
  2. Renseignez une description des modifications réalisées dans le champs Message

    ../_images/commitFenetre.png
  3. 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 !

  4. Vérifiez le log:

    ../_images/commitLog.png

Update

Pour récupérer la dernier version d’un dépôt sur la copie locale, on fait un update:

  1. Cliquez droit sur le dossier de la copie locale et choisissez SVN Update.

  2. Le log donne la liste des fichiers supprimés, déplacés, ajoutés et modifiés :

    ../_images/updateLog.png

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:

../_images/reglesCommit.png

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.

../_images/reglesUpdate.png

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

../_images/login.png

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

../_images/creerdepot.png

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 :

../_images/succes.png

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:

../_images/listedepots.png

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 :

../_images/infodepot.png

Exercice

Afin de vous familiariser avec SVN, effectuez les manipulations suivantes:

  1. Créez un nouveau dossier appelé svn1 sur le bureau

  2. Réalisez un checkout de votre dépôt dans ce dossier

  3. A la racine de votre copie locale, créez un fichier truc.txt

  4. Ajoutez ce fichier et ce dossier à votre dêpot

  5. Réalisez un commit de svn1

  6. 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.

  7. Créez un nouveau dossier appelé svn2 sur le bureau

  8. Réalisez un checkout de votre dépôt dans ce dossier

  9. Dans la copie svn1: ajoutez le texte machin dans le fichier truc.txt

  10. Effectuez un commit de svn1

  11. Vérifiez le contenu du fichier truc.txt dans svn2

  12. Effectuez un update sur svn2 et re-vérifiez le contenu du fichier truc.txt

  13. Supprimez le fichier truc.txt dans svn1

  14. Effectuez un update de svn1 que se passe-t-il ?

  15. Re-supprimez le fichier truc.txt dans svn1 en utilisant la commande delete de TortoiseSVN.

  16. Effectuez un commit de svn1