Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Département de génie électrique et de génie informatique
GEL−1001 Design I (méthodologie)"Gestion concurrente
de versions (Mercurial)"Hiver 2011"
Hiver 2011" GEL−1001 Design I (méthodologie)" 2"
Mercurial" Outil multiplateforme « open source »" Permet de gérer un ensemble de fichiers de
manière concurrente" Chaque utilisateur modifie une copie des fichiers en
parallèle" Gère lʼhistorique" Permet de revenir en arrière sur toute version" Gère la fusion des fichiers entre plusieurs dépôts"
Permet des accès locaux ou via Internet" Variété de protocoles disponible"
Systèmes de contrôles des versions"
RCS (~1985)" Contrôle des versions dans un système de fichiers particulier"
CVS (~1990)" Contrôle des versions avec accès distribués à un dépôt centralisé "
Subversion (SVN) (~2000)" Accès distribués avec dépôt centralisé" Corrections de faiblesses de CVS (p. ex. renommer ou déplacer les fichiers)"
Mercurial (~2005)" Système de version décentralisé, avec emphase sur la simplicité" Codé essentiellement en langage python"
Git (~2005)" Système de version décentralisé, développé pour gérer le code source du
noyau de Linux" Concurrent de Mercurial, codé en C avec commandes en shell et perl"
Hiver 2011" GEL−1001 Design I (méthodologie)" 3"
Exemple dʼutilisation"
Hiver 2011" GEL−1001 Design I (méthodologie)" 4"
Ligne de commande ou interface graphique?"
Mercurial : développé comme un outil ligne de commande (dans un terminal)" hg version Mercurial Distributed SCM (version 1.4.2+20100104) […]"
Tout est possible par la ligne de commande" Interfaces graphiques pour les opérations
quotidiennes" On doit parfois utiliser la ligne de commande pour
effectuer des opérations complexes"
Hiver 2011" GEL−1001 Design I (méthodologie)" 5"
Faire une copie locale"
hg clone : faire une copie locale dʼun dépôt"
Hiver 2011" GEL−1001 Design I (méthodologie)" 6"
hg clone ssh://[email protected]//services! /GEL1001/equipe00/demo!
destination directory: demo"requesting all changes"adding changesets"adding manifests"adding file changes"added 2 changesets with 23 changes to 22 files"updating to branch default"22 files updated, 0 files merged, 0 files removed, 0 files " unresolved"
Visualiser lʼhistorique"
hg log : visualiser lʼhistorique des modifications"
Hiver 2011" GEL−1001 Design I (méthodologie)" 7"
hg log!
changeset: 1:6eca9631615e"tag: tip"user: Christian Gagne <[email protected]>"date: Wed Jan 13 16:05:40 2010 -0500"summary: Date de remise modifiee."
changeset: 0:96f6ec3d3032"user: Christian Gagne <[email protected]>"date: Wed Jan 13 15:59:52 2010 -0500"summary: Ajout de l'exemple du rapport."
Révision et identifiant" Avec Mercurial, chacun travaille avec un dépôt local
distinct" Les dépôts sont synchronisés" Le numéro de révision est spécifique à la copie locale" Lʼidentifiant est globalement unique"
Hiver 2011" GEL−1001 Design I (méthodologie)" 8"
changeset: 1:6eca9631615e"
changeset: 0:96f6ec3d3032"
Révision locale Identifiant unique
Différences entre révisions"
hg diff : connaître les différences entre deux révisions dʼun fichier"
Hiver 2011" GEL−1001 Design I (méthodologie)" 9"
hg diff -r 0!
diff -r 96f6ec3d3032 rapport/rapport_demo.tex"--- a/rapport/rapport_demo.tex "Wed Jan 13 15:59:52 2010 -0500"+++ b/rapport/rapport_demo.tex "Wed Jan 13 17:05:14 2010 -0500"@@ -51,7 +51,7 @@" 55\,555\,555 & Ordralphabétix & \\\hline % matricule & nom & \\\hline" 66\,666\,666 & Tragicomix & \\\hline % matricule & nom & \\\hline" }"-\DateRemise{23 janvier 2008} % Date de remise"+\DateRemise{5 février 2010} % Date de remise"
Historique et différences"
Hiver 2011" GEL−1001 Design I (méthodologie)" 10"
Obtenir le statut des fichiers"
hg status : état actuel des fichiers par rapport au dépôt local"
Fichier rapport/rapport_demo.tex est modifié" Fichier .hgignore est ajouté"
Hiver 2011" GEL−1001 Design I (méthodologie)" 11"
hg status!
M rapport/rapport_demo.tex"A .hgignore"
Modifier la copie locale"
hg commit : intégrer les changements aux fichiers dans le dépôt local " Lʼutilisateur doit entrer une brève description des
changements" Les changements restent locaux, les modifications
ne sont pas propagées aux autres dépôts" Propagation des changements aux autres dépôts
uniquement avec hg push"
Hiver 2011" GEL−1001 Design I (méthodologie)" 12"
Modification de la copie locale"
Hiver 2011" GEL−1001 Design I (méthodologie)" 13"
Configurer le nom dʼutilisateur"
Confirmation des changements exige de configurer Mercurial avec un nom dʼutilisateur " Configuration dans fichier .hgrc du répertoire de lʼutilisateur" Sous Linux et Mac OS X, fichier ~/.hgrc" Sous Windows, le répertoire dʼutilisateur est donné par la commande
suivante (dans un terminal)C:\> echo %UserProfile%"
Dans mon cas, la réponse est C:\Users\cgagne" Donc, fichier à modifier est C:\Users\cgagne\.hgrc"
Section du fichier.hgrc avec le nom dʼutilisateur"
Hiver 2011" GEL−1001 Design I (méthodologie)" 14"
# Ceci est le fichier de configuration de Mercurial. [ui] username = Prenom Nom <prenom.nom.#@ulaval.ca>
Intégrer les changements dans le dépôt maître"
hg push : intégrer les nouvelles révisions du dépôt local dans le dépôt maître
Modifications doivent être intégrées au préalable dans le dépôt local via hg commit"
Hiver 2011" GEL−1001 Design I (méthodologie)" 15"
hg push!
pushing to ssh://[email protected]" //services/GEL1001/equipe00/demo"searching for changes"remote: adding changesets"remote: adding manifests"remote: adding file changes"remote: added 1 changesets with 2 changes to 2 files"
Mettre à jour le dépôt local" hg pull : intégrer les nouvelles révisions du dépôt
maître dans le dépôt local
Met à jour uniquement le dépôt local, ne met pas à jour les fichiers locaux"
hg pull -u : synchroniser le dépôt local et mettre à jour les fichiers locaux"
Hiver 2011" GEL−1001 Design I (méthodologie)" 16"
hg pull!
pulling from ssh://[email protected]" //services/GEL1001/equipe00/demo"searching for changes"adding changesets"adding manifests"adding file changes"added 1 changesets with 2 changes to 2 files"(run 'hg update' to get a working copy)"
Synchroniser les fichiers avec le dépôt local"
hg update : mettre à jour les fichiers avec la révision la plus récente du dépôt local"
Hiver 2011" GEL−1001 Design I (méthodologie)" 17"
hg update!
2 files updated, 0 files merged, 0 files removed, 0 files " unresolved"
Vérifier la mise à jour"
Hiver 2011" GEL−1001 Design I (méthodologie)" 18"
Cycle de travail" hg clone : obtenir une copie locale dʼun dépôt maître" hg commit : sauvegarder des révisions des fichiers
dans le dépôt local" hg push : transmettre les révisions du dépôt local
vers le dépôt maître" hg pull : synchroniser le dépôt local avec le dépôt
maître, afin dʼobtenir toutes les nouvelle révisions" hg update : mettre à jour les fichiers avec la révision
la plus récente présente dans le dépôt local"
Hiver 2011" GEL−1001 Design I (méthodologie)" 19"
Intégrer deux copies locales"
Mercurial est un outil distribué, sans lʼobligation de toujours utiliser le dépôt centralisé" Deux utilisateurs peuvent directement synchroniser
leurs dépôts locaux" hg serve : démarrer un serveur temporaire
permettant à dʼautres utilisateurs de faire des hg pull de votre dépôt local"
Offre également un serveur Web local pour explorer le contenu de dépôt (par défaut sur port 8000)"
Hiver 2011" GEL−1001 Design I (méthodologie)" 20"
Serveur Web intégré"
Hiver 2011" GEL−1001 Design I (méthodologie)" 21"
Fusion de changements et gestion de conflits"
Mercurial fait une gestion intelligente des modifications parallèles" Si modifications sur sections différentes du fichier,
changements fusionnés automatiquement " Si modifications se recoupent, lʼutilisateur doit
intervenir manuellement" Utilisateur informé dʼun changement recoupant des
modifications absentes dans le dépôt local" Commandes clés : hg heads, hg merge, hg resolve"
Hiver 2011" GEL−1001 Design I (méthodologie)" 22"
Désynchronisation de dépôts"
Hiver 2011" GEL−1001 Design I (méthodologie)" 23"
hg push!
pushing to ssh://[email protected]" //services/GEL1001/equipe00/demo"searching for changes"abort: push creates new remote heads!"(did you forget to merge? use push -f to force)"
hg pull!
pulling from ssh://[email protected]" //services/GEL1001/equipe00/demo"searching for changes"adding changesets"adding manifests"adding file changes"added 1 changesets with 1 changes to 1 files (+1 heads)"(run 'hg heads' to see heads, 'hg merge' to merge)"
Conflits entre révisions"
Hiver 2011" GEL−1001 Design I (méthodologie)" 24"
hg heads!
changeset: 4:7e929321cade"tag: tip"parent: 2:710a9666f4a4"user: Christian Gagne <[email protected]>"date: Thu Jan 14 15:07:11 2010 -0500"summary: Le titre est change."
changeset: 3:f3b017a655f1"user: Christian Gagne <[email protected]>"date: Thu Jan 14 15:06:55 2010 -0500"summary: Modification au titre."
hg merge!
merging rapport/rapport_demo.tex"warning: conflicts during merge."merging rapport/rapport_demo.tex failed!"0 files updated, 0 files merged, 0 files removed, 1 files unresolved"use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon"
Conflits entre révisions"
Hiver 2011" GEL−1001 Design I (méthodologie)" 25"
Commandes utiles"
hg init : créer un nouveau projet" hg add : ajouter un fichier" hg rename : renommer un fichier" hg copy : copier un fichier" hg remove : retirer un fichier du dépôt" hg help : obtenir de lʼaide générale" hg help unecommande : obtenir de lʼaide sur
une commande spécifique"
Hiver 2011" GEL−1001 Design I (méthodologie)" 26"
Dépôts pour le cours"
Trois dépôts dʼéquipes créés sur les serveurs du département"
Dépôt du rapportssh://[email protected]//services/ GEL1001/equipeXX/hgroot/rapport"
Dépôt de gestion ssh://[email protected]//services/ GEL1001/equipeXX/hgroot/gestion"
Dépôt de présentation ssh://[email protected]//services/ GEL1001/equipeXX/hgroot/presentation"
Hiver 2011" GEL−1001 Design I (méthodologie)" 27"
Remise des travaux" Chaque semaine, les assistants vont consulter vos
dépôts dʼéquipe" Ordres du jour et procès-verbaux dans le dépôt de gestion" Fichier Project de la planification des tâches dans le dépôt de
gestion" État du rapport dans le dépôt du rapport"
Remises des quatre versions du rapport comme bundle Mercurial dans Pixel" hg bundle nomdubundle! Remise du bundle à https://pixel.fsg.ulaval.ca"
Hiver 2011" GEL−1001 Design I (méthodologie)" 28"
Conclusion"
Mercurial : outil puissant pour travail collaboratif et gestion des versions" Facilite le travail en équipe" Permet le retour en arrière" Décentralisé"
Supporte les fichiers binaires, mais pertinent pour les fichiers contenant du texte" Html, XML, LaTeX, C++, Java, Python, etc. " Les différences entre les fichiers binaires ne
peuvent pas être visualisées"
Hiver 2011" GEL−1001 Design I (méthodologie)" 29"
Références"
Mercurial : The Definite Guide par Bryan OʼSullivan" http://hgbook.red-bean.com"
Tutoriel sur Mercurial" http://mercurial.selenic.com/wiki/Tutorial"
Site Web de Mercurial" http://mercurial.selenic.com"
Hiver 2011" GEL−1001 Design I (méthodologie)" 30"
Logiciels conseillés"
Mercurial (toutes plateformes)" http://mercurial.selenic.com/downloads"
TortoiseHg : interface graphique pour Windows et Linux" http://tortoisehg.bitbucket.org"
Murky : interface graphique pour Mac OS X" http://bitbucket.org/snej/murky/wiki/Home"
Hiver 2011" GEL−1001 Design I (méthodologie)" 31"
Activation du compte"
Pour activer votre compte informatique sur le réseau du département de génie électrique et de génie informatique (nécessaire une seule fois)" https://sechuron.gel.ulaval.ca/auth/nipmiseajour.php"
Hiver 2011" GEL−1001 Design I (méthodologie)" 32"