La magie de SVN Découverte & usage du logiciel
Menu I) SVN, qu'est-ce que c'est? 2) Comment utiliser SVN? 3) Que faire en cas de problème avec SVN?
I) SVN, Qu'est-ce? -Un projet impliquant plusieurs personnes et plusieurs fichiers nécessite que chacun possède la dernière version de chaque fichier afin d'éviter les pertes de travail -L'important est de coordonner et centraliser les fichiers en ne mettant à jour que ce qui a été modifié -C'est le travail de SVN.
I) SVN, Qu'est-ce? -SVN est basé sur un serveur où sont stockés les fichiers ainsi que leurs éventuelles versions précédentes. Ici, c'est le http://serveur-svn ou encore http://192.168.1.2 -SVN détecte les fichiers modifiés et lors d'une demande d'envoi au serveur (Commit), il n'y a que ces fichiers qui sont ajoutés (Add) / mis à jour (Update) / fusionnés (Merged). -Lorsque l'utilisateur veut obtenir la dernière version des fichiers d'un dossier, il fait un Update et seuls les fichiers modifiés lui seront envoyés
I) SVN, Qu'est-ce? -Lorsqu'il y a un conflit insolvable automatiquement par SVN, l'utilisateur peut choisir de donner la priorité à sa version d'un fichier ou à celle contenue sur le serveur. -Il peut aussi ouvrir un éditeur de texte, dans le cas de conflit de fichier texte/code source, et modifier/rajouter/enlever les lignes sur lesquelles portent le conflit. -En cas d'échec de transfert de fichiers vers le serveur, les modifications sont annulées pour éviter les erreurs.
I) SVN, Qu'est-ce? -SVN est donc un élément vital de tout travail en groupe. Il permet de communiquer à toute l'équipe en un clic la totalité des fichiers mis à jour et de se maintenir constamment «à la page», au su des dernières modifications. -Mais il est nécessaire de l'utiliser correctement et son fonctionnement peut être déroutant au début.
-On peut utiliser SVN en ligne de commandes. Mais c'est un peu austère. -Heureusement, nous avons la chance inouïe de pouvoir aussi utiliser SVN avec une interface graphique intégrée à l'explorateur Windows. -Son nom est Tortoise SVN.
-Tortoise SVN dispose des principales commandes de SVN, à savoir la synchronisation avec la base SVN (checkout), l'export (commit), l'import (update), l'explorateur de la base SVN (Repobrowser) et aussi quelques commandes moins utilisées sur lesquelles nous reviendrons. -Cela n'a rien de compliqué! -Vous pouvez accéder à ces commandes avec un clic droit sur le dossier de votre ordinateur.
Le Checkout -Vous venez d'arriver sur votre ordinateur tout neuf. Vous savez que sur le serveur SVN, un dossier a été réservé à votre groupe. -Mais sur votre ordinateur, vous n'avez RIEN. -C'est normal. Il faut synchroniser votre ordinateur avec le serveur SVN, ou du moins une partie de l'arborescence: celle dont vous avez besoin. -Voilà le rôle du checkout.
Le Checkout -Faites un clic droit sur n'importe quel dossier. Ce qui importera seront les chemins d'accès que vous entrerez dans le checkout et vous pouvez les indiquer de n'importe où. -Sélectionnez «SVN Checkout...». Une fenêtre apparaît, la section qui nous intéresse est «Repository». Les autres options ont leur importance mais sont réglées par défaut.
Le Checkout -La première ligne est l'endroit ou Tortoise va chercher la partie de l'arborescence à récupérer. Elle commence par l'adresse du serveur (ou son alias) et ensuite, l'arborescence du dépôt SVN. -Il faudra entrer l'adresse du dossier de votre groupe. Par exemple, si vous êtes Testeur, entrez «http://serveur-svn/svn/2012-2013/sections/testeurs»
Le Checkout -La seconde ligne est l'arborescence sur votre ordinateur. Dans un soucis de cohérence, il faut tenter de respecter la même arborescence (et la même casse) que le dépôt SVN (pour accéder à des dossiers «plus haut» en cas de besoin). -A Creajeux, les ordinateurs ont deux partitions. le C:, avec le système, et le D:, réservé à SVN. La racine diffère par rapport à l'arborescence du serveur mais la suite est similaire. Autrement dit, si vous êtes, à tout hasard, Testeur, entrez «D:\SVN\SERVEUR- SVN\Sections\Testeurs».
Le Checkout -Une fois validé, le Checkout va créer l'arborescence voulue et remplir le dernier dossier avec ce qu'il contenait sur le SVN -Un fichier caché, le «.svn», est créé dans le dernier dossier. Il contient les informations sur les fichiers du dossier et permet de distinguer les nouveaux fichiers des anciens archivés, etc..
Le Commit -Sert à exporter sur le serveur les fichiers créés/modifiés. -Accessible directement via un clic droit dans le dossier (si il contient un.svn), peut se faire sur quelques fichiers/dossiers en particulier si ils sont sélectionnés.
Le Commit -Une fois lancée, la commande ouvre une fenêtre comprenant une liste des fichiers à envoyer. Si il y a des nouveaux fichiers, cochez la case «Show unversioned files» si ce n'est pas fait. Pour sélectionner un dossier et son contenu, cochez le en pressant Shift simultanément. -Ce n'est pas toujours bon d'envoyer la totalité des fichiers que l'on a modifié. Vérifiez avec le groupe afin d'éviter les conflits!
Le Commit -C'est une opération lente, surtout pour l'ajout de nouveaux fichiers, car le serveur doit les analyser. -Certains fichiers sont interdits à l'upload et Tortoise vous le signale en faisant planter le transfert, il faut décocher manuellement les extensions interdites (ex:.o,.bak,.mp3) -Vous apprendrez très vite ce que veut dire «Commit failed». En règle générale, restez présent jusqu'à la fin d'un commit et faites le par petit bout si il y a énormément de nouveaux fichiers.
L'Update -Opération consistant à se procurer la dernière version des fichiers d'un dossier. -Accessible directement d'un clic droit dans le dossier ou sur quelques fichiers/dossiers sélectionnés préalablement. -Abusez-en! Cela vous permettra d'être régulièrement à jour avec la base et d'éviter d'avoir de grosses différences plus tard...
L'Update -N'hésitez pas à regarder ce qui a été modifié/ajouté, ça peut servir (Show log) -Le matin, tout le monde fait un update, ça peut être lent! Sélectionnez bien ce que vous voulez updater (par exemple le dossier de votre éventuel projet, pas tout le dossier de la section) -Parfois, il échoue, mais c'est assez rare.
Le Delete -Un petit mot sur cette commande importante qui permet d'effacer proprement un fichier en local ET sur le serveur. -Il est parfois nécessaire de le faire. On peut le faire en effaçant le fichier en local et en «commitant» son effacement (à partir du répertoire au dessus) mais c'est source de problèmes plus ou moins contraignants, surtout plus. -Accessible avec un clic droit sur le fichier, menu tortoisesvn, Delete (attention, vous pouvez perdre le travail de l'équipe!).
Le Cleanup -Fait sauter les verrous appliqués aux fichiers, applique les modifications qui ont échoué auparavant. -Peut résoudre certains problèmes, lorsqu'il faut faire un Cleanup, Tortoise vous le signale. -Cela arrive en général si vous lancez 2 opérations SVN incompatibles en même temps (Commit et Update) -Accessible via un clic droit, dans le menu tortoisesvn.
Le Revert -Parfois, un update peut nous poser problème, en écrasant notre travail ou créer des conflits à résoudre... -Le Revert permet d'annuler les modifications faites localement et de récupérer la dernière version du serveur. -Accessible d'un clic droit, menu tortoisesvn.
Déplacer un dossier -Copier/coller un dossier sous contrôle de SVN provoque un problème de grave de version: en effet, les fichiers.svn sont restés liés au même répertoire de SVN. -Pour corriger cet état de fait, recherchez et effacez tous les «.svn» du dossier et des sous-dossiers copiés (non, pas à la main) après copie. Les nouveaux fichiers devront être commités.
Petit mot sur le Repo Browser. C'est une sorte d'explorateur d'arborescence pour SVN grâce auquel on peut effectuer diverses opérations comme effacer des fichiers, en copier certains ou juste voir l'arborescence. On y accède via le clic droit.
Maintenant, vous voici des experts de l'utilisation de SVN. En théorie... Passons à la pratique.
III) Problèmes avec SVN La solution à tous vos problèmes existe toujours! Mais avant de vous énerver, voici un petit récapitulatif des problèmes les plus courantes avec leur solution. Gardez le sous la main, c'est toujours utile!
III) Problèmes avec SVN - «You're trying to commit an unwanted file»: Décochez le fichier à l'extension problématique lors du commit ou effacez le. Si il faut absolument le commiter, ajouter une note dans le cahier des doléances techniques. - «Timed out waiting server»: Commitez moins de fichiers à la fois.
III) Problèmes avec SVN -Dossier copié/collé impossible à commiter: Cherchez et effacez tout les.svn qu'il contient et commitez. -Dossier «obstructed»: Sauvez votre travail, effacez le dossier puis effectuez un cleanup et un update, re-copiez votre travail sauvegardé dans le dossier sous contrôle SVN, puis commitez votre travail.
III) Problèmes avec SVN -Pour tout problème insoluble, ajouter une note dans le cahier des doléances techniques et on va voir ce qu'on peut faire.
Conclusion A présent, vous voici des vétérans du système SVN. Il y en a beaucoup comme celui ci mais lui, c'est le votre. SVN c'est votre vrai copain. Sans vous, il ne sert à rien. Sans lui.. Vous connaissez la suite.