Introduction

SVN est un outil de gestion de versions de fichiers. Plus clairement dit, il permet de stocker de manière organisée un ensemble de fichiers, de mettre à jour ces fichiers et de récupérer les différentes versions de ces fichiers. Il gère les accès de manière sécurisée, donnant à chaque utilisateur défini des droits précis.

Dans le cadre de l’équipe de validation des cartes, son plus grand avantage est d’offrir la possibilité aux responsables de l’équipe de faire partager des fichiers de cartes et de travailler dessus à plusieurs.

Il permet en outre aux administrateurs de rapidement mettre en place la dernière version des cartes sur le serveur de test, d’une traite.

Principes et application à Windows

Ci-dessous, sont présentés les principes et concepts véhiculés par le SVN, mais dans le cadre d’utilisateurs Windows. Je conseille aux utilisateurs Linux de lire ce passage malgré tout pour comprendre le SVN. Les commandes Linux sont donnés par la suite.

Pour pouvoir utiliser le SVN, le plus aisé, en particulier pour ceux qui utilisent Windows, est d’employer un client SVN, c’est à dire un petit programme que vous installez sur votre machine, qui vous permettra de gérer le SVN.

L’outil que je recommande pour Windows, que j’utilise et que je vais expliquer, est Tortoise.

Vous pouvez le télécharger à cette adresse (le premier lien suffit). Installez-le ensuite en suivant les instructions, qui n’ont rien de très particulier. Redémarrez ensuite la bête. Vous remarquerez que c’est bien installez, si en cliquant droit sur un fichier au hasard, vous avez, dans le menu qui apparaît, “Tortoise SVN” indiqué.

Checkout

La première chose à faire, c’est un “checkout”. Cette opération permet d’obtenir le SVN Cartes en local sur votre machine : obtenir en fait la dernière version de tous les fichiers cartes existant.

Pour ce faire, cliquez droit n’importe où, sur votre bureau par exemple, et dans le menu déroulant, choisissez “SVN Checkout”.

Une fenêtre s’ouvre et vous demande d’indiquer deux choses :

  • Le SVN que vous voulez obtenir et son adresse (“URL of repository”). Dans le cas des cartes il s’agit du SVN dit du client. Indiquez svn://jeu.landes-eternelles.com:/NouveauClient/trunk/donnees/maps
  • L’endroit où vous voulez que ça se trouve (“Checkout directory”)

Je vous conseille de créer un dossier particulier pour ça, car l’opération va créer, à l’endroit que vous choisissez, plusieurs dossiers.

Après avoir précisé ces deux choses, cliquez sur “Ok”. On va alors vous demander d’introduire votre login et mot de passe, ce que vous faites docilement (distribués par les administrateurs). L’opération se déroule alors tranquillement.

SVN local

Le SVN, sur votre machine, quel qu’il soit, est toujours découpé en trois dossiers : trunk, branches, tags.

  • Le dossier Trunk contient la version officielle des fichiers, c’est à dire, dans notre cas, la version des fichiers utilisés pour le serveur et client officiels : ce sur quoi les joueurs jouent. C’est dans ce dossier que vous travaillez, normalement.
  • Le dossier Branches, contient des versions parallèles à la version officielle, principale. Actuellement, il n’y en a pas.
  • Le dossier Tags contient des versions particulières du passé, correspondant à des moments particuliers. Vous n’avez pas besoin d’utiliser ce dossier.

Update

La fonctionnalité du SVN que vous utiliserez le plus souvent (et que vous devez utiliser le plus souvent) est l’update. Cette opération permet d’actualiser la version du SVN que vous avez sur votre machine, avec la dernière version qui est sur le serveur.

Par exemple, si vous venez de faire un checkout et que deux jours après, l’un des membres de l’équipe change un fichier, la seule façon que vous avez de récupérer ce fichier changer, est d’effectuer un update. Ce que vous avez sur votre machine est synchronisé avec la dernière version. Cette opération correspond en fait à un download de fichiers à partir du serveur.

Pour ce faire, cliquez droit sur un fichier ou un dossier (je vous recommande de cliquer droit sur le dossier Trunk ou Branches, selon le cas, comme ça vous mettez tout à jour), et choisissez dans le menu “SVN update”. On vous demande alors votre login et mot de passe, vous l’indiquez et l’opération se fera toute seule, listant les fichiers qui ont changé ou vous disant que rien n’a été modifié.

A chaque fois que vous comptez modifier un fichier du SVN, je vous recommande de faire un update, pour être sûr que vous travaillez sur la dernière version.

Commit

Grâce à l’opération précédente, vous êtes capables d’obtenir la dernière version des fichiers. En outre, comme ces fichiers sont sur votre machine, vous avez tout le loisir de modifier ces fichiers, dans le répertoire du SVN : le faire n’impacte pas du tout les autres utilisateurs du SVN, le changement n’est effectué que sur votre machine.

Si maintenant vous désirez “officialiser” le fichier que vous avez modifier, c’est à dire faire en sorte qu’il entre sur le SVN serveur, et que tout utilisateur qui fasse un update, obtienne votre fichier modifié, il y a une opération particulière, qui correspond à un upload sur le serveur : c’est l’opération de “commit”.

Ici je me dois d’attirer votre attention sur l’importance de cette opération, il s’agit bien d’officialiser un changement. Assurez-vous donc dans la mesure du possible, que votre changement est sérieux. Mais ne soyez pas trop effrayés, si vous faites un commit d’un fichier, il est toujours possible de récupérer une version précédente dudit fichier. C’est là l’essence du SVN.

Pour effectuer un commit, cliquez droit sur le fichier que vous avez modifié (vous le reconnaîtrez toujours car le petit icone habituellement vert, sur l’icône du fichier, est devenu rouge), et choisissez dans le menu “SVN Commit”.

Une fenêtre s’ouvre, dans laquelle nous vous demandons d’indiquer un message indiquant la nature du changement, pour une question de propreté. Par exemple : “Correction des problèmes de scintillement”.

En bas de la fenêtre, se trouve la liste des fichiers qui vont être concernés par l’opération de commit (en effet, vous pouvez faire un commit sur un dossier, ce qui aura pour effet de faire le commit de tous les fichiers modifiés contenus dans ce dossier), vérifiez-y que le ou les fichiers qui vont être concernés par le commit sont ceux que vous voulez.

Cliquez alors ok, introduisez login et mot de passe et on y est.

Avant de faire un commit d’un changement, assurez-vous toujours d’avoir travaillé sur la dernière version du fichier (via l’update), sinon le commit échouera.

En pratique en fait, je vous conseille, si vous voulez modifier un fichier, d’opérer comme suit :

  • Update du fichier
  • Copie du fichier hors de votre dossier SVN
  • Modification de votre fichier
  • Reupdate du fichier dans le SVN et vérification que le fichier n’a pas été modifié par quelqu’un d’autre
  • Si non, copie de votre fichier modifier dans votre dossier SVN
  • Commit

Si jamais quelqu’un d’autre a fait un changement dans le fichier que vous avez vous même modifié, il va falloir fusionner les deux changements (ce qui consiste dans le cas de fichiers complexes comme ceux des cartes, de refaire l’une des deux versions, donc ne travaillez pas sur un même fichier sur une longue période de temps sans faire de commit).

Ajouter un fichier

Si vous voulez ajouter un fichier dans le SVN, copiez le d’abord dans le bon dossier de votre SVN local. Ensuite, cliquez droit dessus et dans le menu, choisissez “Tortoise SVN” puis “Add”. Préciez votre login et mot de passe et “ok”.

Cette opération n’a pas encore ajouté complètement le fichier, elle n’a fait que signaler au SVN que vous désirez ajouter ce fichier. Vous devez maintenant cliquer droit sur ce fichier et faire un commit. Tout le monde y aura alors accès à condition de faire un update.

Supprimer un fichier

Tout d’abord, ne faites cette opération que quand vous êtes bien sûr de l’inutilité du fichier. Nous pouvons toujours récupérer un fichier supprimé mais mieux vaut faire attention.

Cliquez droit sur le fichier, “Tortoise SVN”, et “Delete”. Faites “ok” avec login et mot de passe. Vous devez ensuite suivre l’opération par un commit du fichier supprimé, qui disparaîtra alors complètement.

Autres fonctionnalités

Le SVN permet toute une autre série de fonctionnalités, qu’il n’est pas utile de mettre par écrit. Je les ajouterai si jamais elles ont du succès et de l’utilité. Le SVN permet de récupérer des fichiers d’une ancienne version, de voir l’histoire des versions avec vos messages de commit,…

Signalez vos questions ou suggestions d’ajout à la suite de ce post it, je le modifierai en conséquence si nécessaire.

Clients SVN sous Linux

Alternatives

En ligne de commande, c’est donc subversion : aussi simple à utiliser que cvs.

Pour KDE : C’est eSVN Il existe 2 autres projets KDE : kdesvn et ksvn, ce dernier étant conçu comme tortoise (intégration). J’ai noté que ces 2 programmes ne font pas partie des paquets gentoo, et ksvn de la debian stable …

Pour Gnome : Rapidsvn, c’est le seul que j’ai trouvé. Il n’y a pas de module d’intégration pour nautilus, pour faire comme tortoise. A noter que les commentaires sur ce programme (sur le net) ne sont pas engageants.

Tutoriel

Voici un tutoriel rapide pour la ligne de commande pour la partie “Client”. Pour débuter voici 2 petites liens qui expliquent pas mal les choses :

Checkout

Pour faire le checkout obligatoire pour le début :

svn co svn://jeu.landes-eternelles.com:/NouveauClient/trunk/donnees/maps

Cela va créer un répertoire NouveauClient avec une copie du SVN sur votre PC. Dans ce répertoire, vous aller avoir 3 sous-répertoires : trunk (le client actuel), branches (non utilisé) et tags (non utilisé).

Commit

Lorsque vous avez fait des modifications sur votre copie locale et que vous désirez la mettre sur le SVN, il faut taper:

svn commit

Cela ouvre votre éditeur de texte ou vous allez pouvoir sur la première ligne, renseignés en résumé les modifications apportées.

Update

Si vous désirez mettre à jour votre copie locale, il faut taper :

svn update

Les fichiers modifiés vont être copiés sur votre PC et vous aurez donc la dernière version.

Ajout

Pour ajouter un fichier, placez-le dans le répertoire où il doit être installés et taper la commande :

svn add fichier

Ensuite il suffira, de faire un commit pour vraiment que cela officialisé.

Suppression

Pour supprimer un fichier, il suffit de taper :

svn rm fichier

Il faut ensuite faire le commit comme d’habitude :)