• Aucun résultat trouvé

GEL−1001 Design I (méthodologie)"

N/A
N/A
Protected

Academic year: 2022

Partager "GEL−1001 Design I (méthodologie)""

Copied!
32
0
0

Texte intégral

(1)

GEL−1001 Design I (méthodologie)"

Gestion concurrente
 de versions (Mercurial)"

Hiver 2011"

(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"

(3)

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"

(4)

Exemple dʼutilisation"

(5)

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"

(6)

Faire une copie locale"

 

hg clone : faire une copie locale dʼun dépôt"

hg clone ssh://chgag196@iroquois.gel.ulaval.ca//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"

(7)

Visualiser lʼhistorique"

 

hg log : visualiser lʼhistorique des modifications"

hg log!

changeset: 1:6eca9631615e"

tag: tip"

user: Christian Gagne <christian.gagne@gel.ulaval.ca>"

date: Wed Jan 13 16:05:40 2010 -0500"

summary: Date de remise modifiee."

changeset: 0:96f6ec3d3032"

user: Christian Gagne <christian.gagne@gel.ulaval.ca>"

date: Wed Jan 13 15:59:52 2010 -0500"

(8)

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

"

changeset: 1:6eca9631615e"

changeset: 0:96f6ec3d3032"

Révision locale Identifiant unique

(9)

Différences entre révisions"

 

hg diff : connaître les différences entre deux révisions dʼun fichier"

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"

(10)

Historique et différences"

(11)

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é"

hg status!

M rapport/rapport_demo.tex"

A .hgignore"

(12)

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"

(13)

Modification de la copie

locale"

(14)

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"

# Ceci est le fichier de configuration de Mercurial.

[ui]

username = Prenom Nom <prenom.nom.#@ulaval.ca>

(15)

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

hg push!

pushing to ssh://chgag196@iroquois.gel.ulaval.ca"

//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"

(16)

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

hg pull!

pulling from ssh://chgag196@iroquois.gel.ulaval.ca"

//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)"

(17)

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"

hg update!

2 files updated, 0 files merged, 0 files removed, 0 files "

unresolved"

(18)

Vérifier la mise à jour"

(19)

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"

(20)

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)"

(21)

Serveur Web intégré"

(22)

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"

(23)

Désynchronisation de dépôts"

hg push!

pushing to ssh://chgag196@iroquois.gel.ulaval.ca"

//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://chgag196@iroquois.gel.ulaval.ca"

//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)"

(24)

Conflits entre révisions"

hg heads!

changeset: 4:7e929321cade"

tag: tip"

parent: 2:710a9666f4a4"

user: Christian Gagne <christian.gagne@gel.ulaval.ca>"

date: Thu Jan 14 15:07:11 2010 -0500"

summary: Le titre est change."

changeset: 3:f3b017a655f1"

user: Christian Gagne <christian.gagne@gel.ulaval.ca>"

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"

(25)

Conflits entre révisions"

(26)

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"

(27)

Dépôts pour le cours"

 

Trois dépôts dʼéquipes créés sur les serveurs du département"

 

Dépôt du rapport


ssh://VotreIDUL@iroquois.gel.ulaval.ca//services/


GEL1001/equipeXX/hgroot/rapport

"

 

Dépôt de gestion


ssh://VotreIDUL@iroquois.gel.ulaval.ca//services/


GEL1001/equipeXX/hgroot/gestion"

 

Dépôt de présentation


ssh://VotreIDUL@iroquois.gel.ulaval.ca//services/


GEL1001/equipeXX/hgroot/presentation

"

(28)

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"

(29)

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

(30)

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"

(31)

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"

(32)

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"

Références

Documents relatifs

Erire un programme C permettant de saisir au lavier un nombre entier stritement

bus PCIe.. pour réparation) depuis la première mise en

  Contraintes temporelles spécifiques imposées pour les envois de chaque utilisateur (p. communications à heure fixe, distribuées dans le temps)&#34;!.   Réseau

Besoins et objectifs Cahier des charges Conceptualisation et analyse de faisabilité Étude préliminaire Concept retenu..

 En industrie, plus de 95 % des boucles de rétroaction sont de de type PID.. Méthodes

Besoins et objectifs Cahier des charges Conceptualisation et analyse de faisabilité Étude préliminaire..

Votre hiérarchisation des objectifs doit être cohérente et doit bien couvrir tous les aspects du problème. Ces objectifs doivent aussi être évalués adéquatement par les critères

  Pas suffisamment performante pour votre produit ou les besoins de vos clients&#34;.   Adaptée pour répondre aux besoins dʼun marché différent (souvent bas