Mémo : Utilisation de SVN sous Windows
Transcription
Mémo : Utilisation de SVN sous Windows
ESIEE Engineering Mémo SVN - Windows B. Perret – L. Buzer Mémo : Utilisation de SVN sous Windows Sommaire Mémo : Utilisation de SVN sous Windows .............................................................................................. 1 1) Logiciels : installation et configuration ........................................................................................... 1 1.1) Client/serveur Subversion pour Windows : TortoiseSVN ........................................................ 1 1.2) Configuration standard ............................................................................................................ 1 1.3) Configuration pour Visual Studio ............................................................................................. 2 1.4) Client SVN pour Visual Studio : AnkhSVN................................................................................. 2 2) Utilisation de SVN............................................................................................................................ 3 2.1) Intégration dans l'explorateur de fichiers ................................................................................ 3 2.1) Récupérer un projet depuis un dépôt ...................................................................................... 3 2.2) Mettre à jour votre copie de travail ......................................................................................... 3 2.3) Envoyer vos modifications sur le serveur ................................................................................ 4 2.4) Gestion des conflits .................................................................................................................. 4 2.5) Les verrous ............................................................................................................................... 5 2.5) Suivi de modifications .............................................................................................................. 5 2.6) Revenir à une version précédente ........................................................................................... 5 1) Logiciels : installation et configuration 1.1) Client/serveur Subversion pour Windows : TortoiseSVN TortoiseSVN fournit un client/serveur SVN, une interface graphique intégrée à Windows Explorer (dans le menu contextuel) et un ensemble d'outil (fusion de fichiers, comparaison de versions, connexion sécurisée, ...). Adresse de téléchargement : http://tortoisesvn.net/downloads.html Installation : demandez à installer le client pour le mode console, ça peut servir. 1.2) Configuration standard La configuration de Tortoise est propre à chaque utilisateur de la machine mais la 1 ESIEE Engineering Mémo SVN - Windows B. Perret – L. Buzer configuration de SVN peut être partagée ! Comme les préférences locales sont propres à chaque machine à l'ESIEE, vous devrez les configurez sur chaque ordinateur que vous utilisez ! Si vous êtes derrière un proxy (comme à l'ESIEE) : clic droit sur le bureau, un dossier ou un fichier dans l'explorateur, menu TortoiseSVN->Settings, section Network, cocher "Enable Proxy Server" et configurer le proxy. Pour l'ESIEE, mettre "cache.esiee.fr" pour "Server adress" et "3128" dans "port". 1.3) Configuration pour Visual Studio Cette étape n'est pas nécessaire à l'ESIEE (salle 3105) car elle est partagée : Propriété par défaut pour les fichiers gérés par SVN : clic droit sur le bureau, un dossier ou un fichier dans l'explorateur, menu TortoiseSVN->Settings, section General, cliquer sur le bouton Edit en face du label "Subversion Configuration File" o Décommenter la ligne "enable-auto-props = yes" (supprimer le # en début de ligne) o Remplacez la section [auto-props] par : [auto-props] # C# generated files *.csproj = svn:needs-lock=* *.resx = svn:needs-lock=* *.sln = svn:needs-lock=* *.suo = svn:needs-lock=* *.Designer.cs = svn:needs-lock=* AssemblyInfo.cs = svn:needs-lock=* # images *.bmp = svn:mime-type=image/bmp;svn:needs-lock=* *.gif = svn:mime-type=image/gif;svn:needs-lock=* *.ico = svn:mime-type=image/x-icon;svn:needs-lock=* *.jpeg = svn:mime-type=image/jpeg;svn:needs-lock=* *.jpg = svn:mime-type=image/jpeg;svn:needs-lock=* *.png = svn:mime-type=image/png;svn:needs-lock=* *.tif = svn:mime-type=image/tiff;svn:needs-lock=* *.tiff = svn:mime-type=image/tiff;svn:needs-lock=* # documents *.doc = svn:mime-type=application/msword;svn:needs-lock=* *.docx = svn:mime-type=application/vnd.openxmlformats-officedocument.wordprocessingml.document;svn:needs-lock=* *.ppt = svn:mime-type=application/vnd.ms-powerpoint;svn:needs-lock=* *.pptx = svn:mime-type=application/vnd.openxmlformats-officedocument.presentationml.presentation;svn:needs-lock=* *.xls = svn:mime-type=application/vnd.ms-excel;svn:needs-lock=* *.xlsx = svn:mime-type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;svn:needs-lock=* *.jar = svn:mime-type=application/octet-stream;svn:needs-lock=* *.odc = svn:mime-type=application/vnd.oasis.opendocument.chart;svn:needs-lock=* *.odf = svn:mime-type=application/vnd.oasis.opendocument.formula;svn:needs-lock=* *.odg = svn:mime-type=application/vnd.oasis.opendocument.graphics;svn:needs-lock=* *.odi = svn:mime-type=application/vnd.oasis.opendocument.image;svn:needs-lock=* *.odp = svn:mime-type=application/vnd.oasis.opendocument.presentation;svn:needs-lock=* *.ods = svn:mime-type=application/vnd.oasis.opendocument.spreadsheet;svn:needs-lock=* *.odt = svn:mime-type=application/vnd.oasis.opendocument.text;svn:needs-lock=* *.pdf = svn:mime-type=application/pdf;svn:needs-lock=* *.ppt = svn:mime-type=application/vnd.ms-powerpoint;svn:needs-lock=* *.ser = svn:mime-type=application/octet-stream;svn:needs-lock=* *.swf = svn:mime-type=application/x-shockwave-flash;svn:needs-lock=* *.vsd = svn:mime-type=application/x-visio;svn:needs-lock=* *.xls = svn:mime-type=application/vnd.ms-excel;svn:needs-lock=* *.zip = svn:mime-type=application/zip;svn:needs-lock=* 1.4) Client SVN pour Visual Studio : AnkhSVN AnkhSVN est une interface intégrée à Visual Studio pour SVN. Adresse de téléchargement : http://ankhsvn.open.collab.net/downloads Installation : suivre les instructions 2 ESIEE Engineering Mémo SVN - Windows B. Perret – L. Buzer Configuration : Lancer Visual Studio (pas trop loin) puis, menu Tools -> Options -> Source Control et sélectionner AnkhSVN. 2) Utilisation de SVN Documentation courte de Tortoise (HTML) : http://tortoisesvn.net/docs/release/TortoiseSVN_fr/tsvn-dug.html Documentation complète de Tortoise en français (pdf): http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.7.1-fr.pdf?download 2.1) Intégration dans l'explorateur de fichiers Tortoise modifie les icones des fichiers gérés par le SVN de manière à rapidement voir leur état (à jour, modifié, en attente d'ajout, en conflit, ...): 2.1) Récupérer un projet depuis un dépôt Clic droit sur le dossier où doit être téléchargé le projet, cliquez sur "SVN checkout". Renseignez l'adresse du référentiel, vérifiez que le dossier destination est correct, cliquez sur "OK" et renseignez vos identifiants de connexion. La plupart des erreurs à ce niveau sont dues a une mauvaise transcription de l'adresse du dépôt (sensible à la casse). 2.2) Mettre à jour votre copie de travail Clic droit sur le dossier contenant la copie de travail, cliquez sur "SVN Update". Tortoise vous donne la liste des fichiers ajoutés, modifiés, supprimés et en conflits. Un fichier est en conflit s'il a été édité par plusieurs personnes en même temps et que SVN est incapable de fusionner les différentes 3 ESIEE Engineering Mémo SVN - Windows B. Perret – L. Buzer versions simplement (par exemple si une même ligne du fichier a été modifiée de manière différentes par plusieurs utilisateurs). C'est alors à vous de gérer le conflit en choisissant les lignes à conserver. 2.3) Envoyer vos modifications sur le serveur Clic droit sur le dossier contenant la copie de travail, cliquez sur "SVN Commit". Tortoise ouvre une fenêtre permettant de saisir un texte qui décrit le contenu de votre mise-à-jour. C'est une bonne pratique de le renseigner même avec une description minimaliste, par exemple "debug IHM sélection d'objets"), cela permet de retrouver facilement une modification particulière et de revenir dessus si nécessaire. Dans cette même fenêtre, vous pouvez sélectionner les fichiers qui doivent être ajoutés aux projets. Le simple ajout d'un fichier dans le dossier du projet ne suffit pas à l'ajouter au SVN, il faut le demander explicitement. Si SVN détecte un conflit, le commit sera annulé ! Vous devrez d'abord faire un update et résoudre le conflit avant de pouvoir enregistrer vos modifications ! 2.4) Gestion des conflits En cas de conflits de versions sur un fichier (par exemple "foo.bar"), SVN va générer 4 fichiers différents pour vous aider: un fichier "foo.bar" : c'est le fichier fusionné. A chaque portion du fichier en conflit, SVN insère un texte de la forme: <<<<<<< foo.bar votre version ======= la version dans le dépôt >>>>>>> revision Ceci vous permet de facilement comparer les modifications que vous avez apportées par rapport à celle qui ont été apportées sur le dépôt. un fichier "foo.bar.mine" : c'est votre fichier comme il a existé dans votre copie de travail avant que vous mettiez à jour votre copie de travail. un fichier "foo.bar.rOLDREV" : C'est le fichier qui était la révision de BASE avant que vous mettiez à jour votre copie de travail. C'est-à-dire le fichier que vous avez extrait avant de faire votre dernière édition. un fichier "foo.bar.rNEWREV" : C'est le fichier que votre client de Subversion venait de recevoir du serveur quand vous avez mis à jour votre copie de travail. Ce fichier correspond à la révision de tête du référentiel. Les différentes solutions pour résoudre le conflit sont : 4 ESIEE Engineering Mémo SVN - Windows B. Perret – L. Buzer Utilisation de l'outil de fusion: clic droit sur le fichier en conflit, menu TortoiseSVN->Edit Conflict . Vous avez alors accès à un outil qui vous montrera simultanément les 2 versions du fichier (la votre et celle du dépôt) en surlignant les conflits en rouge. Vous pourrez alors choisir pour chaque conflit, quelle version doit être utilisée. Edition manuelle du fichier. Une fois le conflit résolu, il faut faire un clic droit sur le fichier, menu TortoiseSVN->Mark as Resolved. 2.5) Les verrous Par défaut, tous les fichiers peuvent être édités par tout le monde en même temps. Ce comportement est efficace pour les fichiers textes contenant du code écrit par l'utilisateur mais fortement néfaste pour les binaires ou les fichiers générés automatiquement par un programme comme Visual Studio (fichiers de configuration, code auto-généré pour les IHM). Dans ce cas, il faut verrouiller le fichier avant de l'éditer, toute édition du fichier par un autre utilisateur sera alors impossible tant que vous possédez le verrou et que la version n'est pas à jour. La modification de la section [auto-props] du fichier de configuration SVN a pour but de définir automatiquement les propriétés de verrouillage des fichiers en fonctions de leur nom, elle est donc très importante pour se prémunir de difficultés insolubles. Le verrou sur un fichier est automatiquement libéré lors de l'envoie de vos modifications au serveur (commit). 2.5) Suivi de modifications Tortoise propose un ensemble d'outils pour suivre les modifications d'une ressource: Show log: montre l'ensemble des révisions avec leur description (d'où l'intérêt de saisir un message lors d'un commit) Blame : permet de savoir pour chaque ligne d'un fichier : le numéro de la révision où elle a été modifiée en dernier et son auteur. Diff: compare la version actuelle avec les révisions précédentes. 2.6) Revenir à une version précédente Personne n'est jamais à l'abri d'une erreur et SVN permet de facilement les réparer en revenant en arrière. Pour cela il suffit de faire un clic droit sur le fichier/dossier incriminé, puis menu Tortoise SVN-> Revert et sélectionner à quelle version vous souhaitez revenir. Les outils "Show log" et "Diff" vous aideront à trouver la version à laquelle vous devez revenir. 2.7) Effectuer des copier / déplacer / renommage Si vous utilisez les commandes copier/couper/coller/renommer de windows, vous allez 5 ESIEE Engineering Mémo SVN - Windows B. Perret – L. Buzer provoquer un UPLOAD complet du répertoire/fichier en question. Pour éviter cela, il faut utiliser l’équivalent sous TortoiseSVN. Utilisez un click droit souris + glisser + relâcher pour faire apparaître le menu contextuel suivant : Pour effectuer un changement de nom, il faudra effectuer le sélectionner/glisser/relâcher dans le même répertoire. 6