TRAVAUX DIRIGÉS ATELIER SUBVERSION IGL601/IGL711 TECHNIQUES ET OUTILS DE DÉVELOPPEMENT 18 SEPTEMBRE 2015 PAR JONATHAN GUAY, ING. M.ING., DAA, PMP DÉPARTEMENT D INFORMATIQUE UNIVERSITÉ DE SHERBROOKE
Introduction Historique subversion vs git subversion vs Redmine Redmine pour votre travail pratique subversion pour votre travail pratique Structure Quelques commandes de bases Exemple d utilisation Exercice AGENDA 2
INTRODUCTION subversion appelé svn C est quoi svn? svn est un outil de gestion des versions (sources) pour favoriser le travail collaboratif des développeurs logiciels. Permet de sauver de l espace disque Permet de gérer les modifications d un fichier faites par 2 développeurs à la fois Permet de gérer plusieurs versions de notre logiciels Permet de comparer 2 versions de logiciels ou d un fichier 3
HISTORIQUE À l origine: RCS (Revision Control System) (1980) libre contrairement au système SCCS (Source Code Control System) (1972) Conserve les deltas d une version à l autre Puis est apparut CVS (Concurrent Versions System) (1990) Gestion concurrente des versions Enfin SVN Similaire à CVS mais amélioré On parle toujours de dépôts centralisé unique De nos jours Git Logiciel de gestion de versions, décentralisé Développé par Linus Torvalds 4
SUBVERSION VS GIT La grande différence entre svn et git est que ce dernier utilise un dépôt décentralisé. Ce qui veut dire: Avec git, vous pouvez travailler hors connexions et continuer à gérer des versions locales Une fois connecter, vos changements sont ensuite transmis à git sur le serveur initial. git favorise le travaille décentralisé, particulièrement utilise pour le développement de logiciels libre SVN est plus simple à apprendre et utiliser. Github.com a aidé à la popularité de git. Site web offrant une l hébergement de vos versions à l aide de git Gratuit pour les logiciels libres Payant pour les autres 5
SUBVERSION VS REDMINE Redmine permet simplement de visualiser le contenu de votre dépôt de version svn Liste des versions Commentaires de de chaque versions Permet de voir les différences entre les versions. Ne permet pas d ajouter des fichiers à votre dépôt ou de créer des branches 6
SUBVERSION VS REDMINE (2) 7
REDMINE POUR VOTRE TRAVAIL PRATIQUE Accès des laboratoires ou via le RPV à l aide de l URL suivant: dinf-prj-35.dinf.fsci.usherbrooke.ca/redmine/ Vous devrez accepter le certificat de sécurité non authentifié 1) Vous devez d abord vous inscrire sur Redmine en vous établissant une connexion afin de créer votre utilisateur Redmine (utilisez votre CIP). 2) L administrateur (l enseignant) vous assignera le rôle de Manager pour le projet déjà créé pour votre équipe. 8
SUBVERSION POUR VOTRE TRAVAIL PRATIQUE Endroit du dépôt svn: dinf-prj-35.dinf.fsci.usherbrooke.ca/opt/redmine/depots/svn/equipexsvn (remplacer X par votre numéro d équipe) Exemple de connexion en ligne de commande pour effectuer un checkout 1) lorsque vous travailler dans le laboratoire: svn co svn+ssh://cip@dinf-prj- 35.dinf.fsci.usherbrooke.ca/opt/redmine/depots/svn/equipeXsvn (remplacer CIP et X) equipexsvn est le nom de votre dépôt svn. Habituellement, nous utilisons plutôt le nom du logiciel développé comme nom de dépôt. Notez que tous les étudiants du cours ont présentement accès en lecture et écriture à tous les dépôts. Habituellement seules les personnes autorisées ont accès en lecture et seuls les développeurs du projet on accès en écriture. Les étudiants qui ne respecteront pas la propriété intellectuelle des autres équipes seront accusés de plagiat. 9
SUBVERSION - STRUCTURE Par convention un dépôt SVN contient généralement la structure suivante: trunk (développement le plus récent) branches (contient les branches de développement) tags (contient les TAGs de vos versions officiels testés releases (ex pour livraison)) pour créer vos répertoires utiliser la commnade svn mkdir Exemple : svn mkdir svn+ssh://cip@dinf-prj- 35.dinf.fsci.usherbrooke.ca/opt/redmine/depots/svn/equipeXsvn/trunk 10
SUBVERSION COMMANDES DE BASE svnadmin create project_repo svn checkout http://svn.server.com/svn/project_repo --username=tom svn add array.c svn commit -m "Initial commit" svn log svn diff svn update svn copy --revision=4 trunk/ tags/basic_array_operations svn resolve --accept=working README svn copy trunk branches/jerry_branch svn merge http://svn.server.com/svn/project_repo svn lock svn help Possibilité d utiliser un client SVN comme TurtoiseSVN, RapidSVN ou Eclipse. 11
SUBVERSION EXEMPLE D UTILISATION 12
SUBVERSION EXERCICE Écrivez les commandes pour effectuer ce qui suit: 1) Créer un dépôt pour le logiciel TestLog2000 2) Créer la structure habituelle d un dépôt SVN 3) Extraire les sources dans votre répertoire de travaille 4) Ajouter le fichier TestLogMain.cpp à votre tronc 5) Soumettre vos changements (commit) 6) Modifier le logiciel TestLogMain.cpp 7) Soumettre vos changements 8) Créer un tag TestLog2000_ReleaseAlpha pour votre logiciel 9) Créer une branche de développement pour votre collègue 10) Modifier TestLogMain.cpp dans votre branche de développement 11) Faite un merge des changement de la branche de développement vers le tronc 13
DOCUMENTATION HTTP://WWW.USHERBROOKE.CA/INFORMATIQUE/INTRANET/RESSOURCES-ET- DOCUMENTATION/LOGICIELS-SERVICES-OUTILS/GESTION-ET-ACCES-AUX- SERVEURS-DE-RECHERCHE-ET-DE-PROJETS/ HTTP://WWW.USHERBROOKE.CA/INFORMATIQUE/INTRANET/RESSOURCES-ET- DOCUMENTATION/LOGICIELS-SERVICES-OUTILS/UTILISATION-DE- LENVIRONNEMENT-DE-GESTION-DE-PROJET-REDMINE/ HTTP://WWW.USHERBROOKE.CA/INFORMATIQUE/INTRANET/RESSOURCES-ET- DOCUMENTATION/LOGICIELS-SERVICES-OUTILS/GESTIONNAIRES-DE- VERSIONS-SVNGITCVS/ 14