SVN

Création du compte SVN

En séance vous sera expliqué comment créer votre compte SVN.

Client SVN

Pour communiquer avec le serveur SVN, vous devez utiliser un client local. Pour Windows, nous vous conseillons d’installer tortoiseSVN. Les exemples qui suivent sont présentés avec ce client.

../_images/tortoise.png

Principe de fonctionnement

Un système de versioning utilise un dépôt de fichiers présent sur un serveur. C’est lui qui contient, fusionne et met à jour les versions. Les différents utilisateurs ne font qu’échanger avec le serveur, il n’y a pas d’échanges directs entre utilisateurs. C’est un système centré sur le serveur.

Etape 1 : point de départ

Voici une photo à un instant t où tous les acteurs sont synchronisés : mêmes fichiers avec numéros de version identiques.

../_images/serveur.png

Etape 2 : modifications

L’utilisateur 2 modifie le fichier f1.cs. A cet instant, le serveur ne connaît pas les modifications apportées.

../_images/v2.png

Etape 3 : COMMIT

L’utilisateur 2 décide de poster ses modifications sur le serveur. Pour cela, il effectue un SVN-COMMIT qui va mettre à jour le fichier sur le serveur en incrémentant son numéro de version.

../_images/v3.png

Etape 4 : UPDATE

Les fichiers de l’utilisateur 1 ne sont maintenant plus à jour par rapport à la version présente sur le serveur. En fait ce n’est pas bloquant car l’utilisateur peut continuer à travailler avec les fichiers de la version 231. Cependant, s’il modifiait le fichier f1.cs, alors il y aurait un conflit de version. Contrairement à ce que l’on pourrait penser, les utilisateurs ne reçoivent pas une notification du serveur lorsque celui-ci crée une version supérieure. C’est à l’utilisateur que revient la tâche de faire la mise à jour quand il en a besoin ou quand il le souhaite. Pour cela, l’utilisateur 1 effectue un SVN-UPDATE ce qui va synchroniser ses fichiers avec ceux du serveur.

../_images/v4.png

Si l’utilisateur 1 avait modifié d’autres fichiers, alors ses modifications ne sont pas écrasées par la commande UPDATE et heureusement d’ailleurs !

Création d’un répertoire SVN

CHECKOUT

Une fois un répertoire créé sur votre machine, il faut l’associer au dépôt présent sur le serveur. Pour cela, on utilise la commande SVN-CHECKOUT qui va vous demander d’entrer l’adresse http sur serveur ainsi que vos identifiants de connexion. Après cela, une commande SVN-UPDATE est lancée automatiquement pour télécharger les fichiers présents sur le serveur dans ce répertoire. On peut alors commencer à travailler.

Remarques

L’étape du SVN-CHECKOUT peut dérouter certains élèves car on ne se rend pas compte du type de liaison se mettant en place entre le répertoire et le serveur. Voici quelques repères pour vous éclairer :

  • Vous pouvez détruire le répertoire créé, cela n’a aucune importance, car cela n’impacte en rien le serveur.

  • Le serveur ne garde aucune information des répertoires dupliqués. Il peut y en avoir 0, 1 ou 1000, cela n’influe pas sur sa logique interne.

  • Un répertoire SVN, même s’il est présent sur le disque n’est pas une dropbox. Lorsque vous ajoutez ou retirez un fichier, cela ne se propage pas directement sur le serveur. Il faut obligatoirement passer par une commande COMMIT.

  • La commande CHECKOUT ne se fait qu’une unique fois sur un nouveau répertoire.

  • La commande CHECKOUT n’est ni une commande UPDATE ni une commande COMMIT. Si vous la relancez sur le même répertoire, vous obtiendrez une erreur.

  • Vous pouvez avoir 2 répertoires SVN sur votre bureau associées au même dépôt SVN. Même si cela représente peu d’intérêt, c’est parfaitement possible.

  • Pour supprimer un fichier du serveur, il faut d’abord supprimer le fichier sur votre disque et ensuite effectuer un COMMIT.

Scénario typique

Si vous utilisez une machine à l’école et que vous voulez travailler chez vous voici le modus operandi :

  • Vous vous connectez à une machine windows.

  • Vous créez un répertoire sur le bureau et effectuez une commande CHECKOUT.

  • Les fichiers sont téléchargés en local.

  • Vous travaillez comme habituellement.

  • En fin de séance, vous effectuez votre COMMIT et une fois le COMMIT terminé, vous effacez le répertoire du bureau.

  • Vous rentrez chez vous.

  • En supposant que vous ayez déjà un répertoire SVN associé au dépôt, il vous suffit d’effectuer un SVN UPDATE pour récupérer les fichiers modifiés à l’école. Les fichiers modifiés sont automatiquement téléchargés.

Une telle méthode de travail est très pratique car elle supprime les clefs USB ou les envois de projet zippé par mail.

A faire

  • Créez un dépôt SVN ou demandez à l’intervenant de le faire.

  • Créez un répertoire SVN sur votre bureau. Le nom du répertoire n’a aucune importance.

  • Une fois le répertoire créé, un clic droit permet de déclencher la commande SVN-Checkout.

  • Décompressez le zip du projet à l’intérieur.

  • Effectuez un SVN-Commit de l’ensemble des fichiers, l’option ALL peut être utile.

../_images/aa.png

Puis ensuite :

  • Connectez vous directement sur le dépôt du serveur à travers le navigateur. Il suffit pour cela de taper son adresse comme une adresse http et d’entrer vos identifiants :

../_images/bb.png

Si les fichiers sont présents sur le serveur :

  • Supprimez le répertoire courant.

  • Créez un nouveau répertoire SVN sur votre bureau

  • Effectuez une commande SVN-CHECKOUT pour récupérer les données du serveur.

Consigne

Consigne à respecter Pensez à effectuer un SVN-COMMIT à chaque fin de séance pour envoyer l’ensemble de votre travail sur le dépôt.

Historique

La commande SVN-SHOW LOG permet de visualiser tous les commits effectués ainsi que les fichiers créés ou modifiés. En effectuant un clic droit sur un numéro de version ou un nom de fichier, vous pourrez lancer une opération REVERT qui ramène les fichiers à cette version précédentes.