UE : Génie Logiciel Maîtrise d informatrique TP svn Christian Gentil March 8, 2013
Introduction Ce TP est conçu pour être réalisé en ligne de commande sous un environnement linux avec le paquet subversion installé. On suppose l utilisateur familiarisé avec les commandes de base du shell. Exercice 1 Objectif : Voir le fonctionnement de base de svn, comprendre l intérêt d un dépôt local, travailler seul avec svn. Création d un dépôt en local Création d une copie de travail Les manipulations dans la copie de travail Sauvegarde et restauration d un dépôt Création d un dépôt local Dans votre répertoire utilisateur créez une dossier que vous nommerez svn Créez un dépôt nommé exercice1 : svnadmin create exercice1 Regardez le contenu du dossier créé : exercice1 Tester votre dépôt Création d un copie de travail. Dans votre répertoire utilisateur créez une dossier que vous nommerez tp svn Dans votre répertoire tp svn créez une copie de travail de votre dépôt exercice1 : ou svn checkout file:///home/cgentil/svn/exercice1 svn co file:///home/cgentil/svn/exercice1 Vérifiez que votre répertoire est bien une copie de travail. Dans le répertoire home/cgentil/tp svn/exercice1 tapez : svn info 1
Travailler dans la copie de travail Créez un fichier README.txt dans votre copie de travail, contenant le texte : Création du fichier pour ajout du fichier Redardez le statut des fichiers de la copie de travail svn stat? README.txt Le fichier n est pas sous gestion de svn Mettre le fichier sous gestion de svn svn add README.txt Redardez le statut des fichiers de la copie de travail svn stat A README.txt Propager les modifications de la copie de travail sur le dépôt svn commit -m"ajout du fichier README.txt" Ajout README.txt Transmission des données. Révision 1 propagée. Vérifiez le statut des fichiers de la copie de travail Regardez l historique des modifications svn log ----------------------------------------------------------- r1 cgentil 2013-02-22 12:34:47 +0100 (ven. 22 févr. 2013) 1 ligne ajout du fichier README.txt ----------------------------------------------------------- Supprimez le fichier README.txt du répertoire exercice1(par la commande rm ) Regardez le statut des fichiers de la copie de travail Faites un update ou svn update svn up 2
Le fichier a été restauré. Pour supprimer un fichier du dépôt il faut le supprimer de la gestion de svn. Supprimer un fichier de la gestion de svn svn del README.txt Vérifiez par svn stat Propagez les modifications sur le dépôt svn ci -m"suppression de README.txt" Le fichier a été supprimé de la gestion de svn pour cette nouvelle révision mais il est toujours présent dans les révisions antérieures. récupérer un fichier supprimé de la gestion svn ou récupérer un fichier d une révision antérieure svn -r1 up README.txt updating README.txt : A README.txt Actualisé à la révision 1. Le fichier est récupéré mais marqué à la révision 1. C est-à-dire qu un update va remettre la copie de travail à la dernière révision dans lequel il ne figure pas, il sera donc supprimé de nouveau. Sauvegarde et restauration du dépôt Pour sauvegarder le dépôt, dans le dossier svn tapez : svnadmin dump exercice1> sauvegarde exercice1.dump Le dépôt est copié sur la sortie standard qui est redirigé vers un fichier restauration de la sauvegarde dans un dépôt (déjà existant : Exercice 2 svnadmin load exercice1bis < sauvegarde exercice1.dump Objectif : Utilisation d un dépôt sur un serveur lors d un travail en équipe, fonctionnement de base de la gestion des conflits. Cet exercice est à faire par groupe de 3 ou 4 binômes travaillant sur le même dépôt. L objet est de produire en collaboration un document en L A TEX sur les commandes de base vue dans l exercice 1. 3
Description du contenu du document Dans ce document devra figurer 4 sections (une par binôme) une section Création d un dépôt en local dans laquelle vous y copierez l aide de la commande svnadmin create une section Création d une copie de travail dans laquelle vous y copierez l aide de la commande svn checkout une section Propager les modifications de la copie sur le serveur dans laquelle vous y copierez l aide de la commande svn commit une section Sauvegarde d un dépôt dans laquelle vous y copierez l aide de la commande svnadmin dump Étapes de construction Pour cette phase il est recommandé d utiliser les commandes suivantes pour comprendre ce qu il se passe : Avant chaque commit faire un update Utilisez svn stat pour déterminez le statut de vos fichiers par rapport à votre dernier update Utiliser svn diff pour voir les modifications que vous avez apportées depuis votre dernier update Instructions : 1. Créez un 1er document nommé doc svn.tex et le mettre sur le dépôt contenant la structure L A TEX suivante : \documentclass[12pt,a4paper]{report} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \author{diandiant} \begin{document} \section{création d un dép^ot en local} \section{création d une copie de travail} \section{propager les modifications de la copie sur le serveur} \section{sauvegarde d un dép^ot} \{document} 2. Chaque binôme crée une copie de travail du dépôt. 3. Un des binômes ajoute le document initiale contenant uniquement la structure L A TEX. 4. Les autres binômes récupèrent le document du dépôt. 4
5. Chaque binôme ajoute dans sa section uniquement le nom de la commande qu il va décrire. 6. Chaque binôme fait une propagation de sa copie de travail sur le dépôt, après avoir fait comme toujours un update. Normalement si chacun a bien respecté sa zone d écriture, il n y a pas eu de conflit et svn a pu faire les fusions sans problème. 7. Chaque binôme ajoute le résultat de l aide de la commande que vous devez décrire et propage ses modifications. Création d un conflit Chaque binôme crée, au début du document, une section Introduction et y insère une explication du contenu de sa section. Chaque section propage ses modifications sur le serveur. Ceci engendre inévitablement des conflits (sauf pour le 1er binôme qui a fait le commit). la commande svn up retourne Updating. : Conflit découvert dans /home/cgentil/tp svn/latex2/doc svn.tex. Sélectionner : (p) report, (df) diff entier, (e) édite, (mc) mes conflits, (tc) autres conflits, (s) affiche toutes les options : Résolution des conflits Tapez s pour voir toutes les options Comme on ne veut pas écraser ni la version du dépôt ni notre version locale on choisit p pour gérer la fusion à la main. 4 fichiers sont créés : doc svn.tex rassemblant les modifications locales et celles du dépôt repérées comme suit : quelques lignes du contenu commun aux révisions avant la zone de conflit <<<<<<<.mine les modifications de ma version locale mais pas propagée ======= Les modifications du dép^ot depuis mon dernier update >>>>>>>.r10 quelques lignes du contenu commun aux révisions après la zone de conflit doc svn.r10 la version de la dernière révision (n) doc svn.mine la version avec les modifications locales uniquement doc svn.r9 la version de l avant dernière révision (n 1) 5
La gestion du conflit se fait en éditant à la main le fichier doc svn.tex et en conservant et rejetant ce qui doit l être. Une fois la fusion réalisée, il est impératif de le mentionner à svn par le commande : svn resolved doc svn.tex Les fichiers avec les extensions.r9.r10.mine sont supprimés et le commit peut être réalisé après un update car une autre révision a pu être propagée entre temps. Si c est le cas la commande svn commit le mentionnera et refusera le commit. Exercice 3 Objectif : Utilisation d un dépôt sur un serveur pour un projet, organisation du dépôt en trunk, tags, branches. Réalisez le travail de l exercice 2 en mettant en place la structure trunk, tags, branches. On réalisera 2 versions tagées du document. Une première avec uniquement les sections. Une deuxième avec le contenu des sections. Aucune modification ne doit être réalisée directement sur le trunk, passez systématiquement par les branches. 6