Mercurial - PHPQuebec - December 08

25
Mercurial pour le programmeur de garage Hg – the chemical symbol for the element mercury Mercurial (adj) relating to or having characteristics attributed to the god Mercury Maxime Dupuis [email protected]

description

Mercurial pour le programmeur de garage.

Transcript of Mercurial - PHPQuebec - December 08

Page 1: Mercurial - PHPQuebec - December 08

Mercurialpour le programmeur de garage

Hg – the chemical symbol for the element mercury

Mercurial (adj) relating to or having characteristics attributed to the god Mercury

Maxime Dupuis [email protected]

Page 2: Mercurial - PHPQuebec - December 08

Qui suis-je? Qui êtes-vous?

Étudiant à l'UdeS, 2e année Mon passé avec PHP Québec Qui a déjà utilisé un SCV?

SCVD?

Maxime Dupuis [email protected]

Page 3: Mercurial - PHPQuebec - December 08

Plan de présentation

SCV Centralisé SCV Distribué

Avantages et Inconvénients

Différents SCVD Certains concepts de base Les commandes (avec exemples!) Outils (avec exemples?) Extensions (avec exemples?)

Maxime Dupuis [email protected]

Page 4: Mercurial - PHPQuebec - December 08

SCV Centralisé

Serveur central Sauvegarde = Check In (commit) Désavantages (branches/merges)

Exemples de SCV :SVN, CVS

Maxime Dupuis [email protected]

Page 5: Mercurial - PHPQuebec - December 08

SCV Distribué

Chaque repo connait l'historique On parle d'équivalence

Maxime Dupuis [email protected]

Page 6: Mercurial - PHPQuebec - December 08

Avantages

Facile de gérer les branches et les merges Repo local, toujours disponible Rapide et peu coûteux en ressources Accès à l'historique (ex.: renommer un fichier)

Dossier .hg à la racine

Maxime Dupuis [email protected]

Page 7: Mercurial - PHPQuebec - December 08

Inconvénients

Façon différente de travailler Besoin de convention (qui est le maître?) Pas aussi développé (SCV, outils, etc.) Lequel choisir?

Maxime Dupuis [email protected]

Page 8: Mercurial - PHPQuebec - December 08

Différents SCVD

Git -- Linus Torvalds Bazaar -- Canonical Mercurial -- Matt Mackall

Maxime Dupuis [email protected]

Page 9: Mercurial - PHPQuebec - December 08

Git

Écrit en C le plus rapide Projets : Kernel linux, OLPC, RoR, projets Ruby Hébergement : GitHub.com Comple(t|xe)

Maxime Dupuis [email protected]

Page 10: Mercurial - PHPQuebec - December 08

Bazaar

Écrit en Python le moins rapide Projets : Ubuntu, Drupal, Drizzle Hébergement : LaunchPad.net Similaire à SVN Beaucoup de révisions, change souvent

Maxime Dupuis [email protected]

Page 11: Mercurial - PHPQuebec - December 08

Mercurial

Écrit en Python Relativement rapide, léger Projets : Mozilla, Netbeans, projets Python Hébergement : FreeHG.org, Intuxication (fr) Similaire à SVN

Maxime Dupuis [email protected]

Page 12: Mercurial - PHPQuebec - December 08

Concepts

Révision : changements groupés Consiste en un numéro et un ID unique ex.: changeset: 0:8fc598890cdd4

Branche : 2 têtes pouvant être combinées Même révision parente à la base Pas nécessairement 2 lignes de développement (2

repos)

Un fichier de configuration par repo, un pour l'usager, et un global à mercurial

Maxime Dupuis [email protected]

Page 13: Mercurial - PHPQuebec - December 08

Commandes

clone : permet de cloner un repo

add : ajoute un fichier au repo

remove : supprime un fichier du repo

log : affiche l'historique du repo

status: visualisation globale des changements

commit : sauvegarde les changements, crée une révision

push/pull : échange des révisions avec un autre repo

update/merge : mets à jour les fichiers locaux/combine 2 branches

fetch : même chose que pull → update → mergeMaxime Dupuis [email protected]

Page 14: Mercurial - PHPQuebec - December 08

Commandes

Exemple!

Maxime Dupuis [email protected]

Page 15: Mercurial - PHPQuebec - December 08

Commandes supplémentaires

diff: affiche les changements (format patch)

revert : efface les changements effectués à un fichier

rollback : même chose que `revert *`

incoming/outgoing : différence entre 2 repos

serve : dessert une interface web

tag : attache un nom (ex.: ”v1.0”) à une révision

tags : liste les ”tags”

Maxime Dupuis [email protected]

Page 16: Mercurial - PHPQuebec - December 08

Commandes supplémentaires (2)

bundle : exporte un groupe de révisions format binaire

unbundle : importe un fichier de révisions binaire

export : exporter une révision format patch

strip : retire les révisions du repo

import : importe un patch en tant que révision

annotate : montre les lignes d'un fichier avec no de révision

Utile si combiné à la commande log

Maxime Dupuis [email protected]

Page 17: Mercurial - PHPQuebec - December 08

Commandes supplémentaires

Exemples?

Maxime Dupuis [email protected]

Page 18: Mercurial - PHPQuebec - December 08

Outils

Plugiciel pour Eclipse

TortoiseHG (Windows seulement)

Conversion

Hgsvn : migrer ou gérer un dépôt SVN avec mercurial

Autres : GitConversion, extension Convert (Darcs, CVS), Tailor (bzr)

hgk/hgview : GUI pour la commande log

Meld : GUI pour faciliter la combinaison de 2 révisions lors de conflits

Maxime Dupuis [email protected]

Page 19: Mercurial - PHPQuebec - December 08

Hgsvn

hgimportsvn : importe un repo SVN depuis la révision 0 (loooooong...!) ex.: hgimportsvn http://domain.tld/repo target-folder Si migration : `find . -name '.svn' | xargs rm -r` dans

”target-folder”

hgpullsvn : importe les nouvelles révisions dans mercurial

http://pypi.python.org/pypi/hgsvn

Maxime Dupuis [email protected]

Page 20: Mercurial - PHPQuebec - December 08

Extensions

glog, hgk/hgview : pour visualiser l'arbre de révisions

mq : patch queue (Git) – gestionnaire de patches

Forest : gérer un arborescence de repos Utile pour gérer un repo comprenant mq Maintenue par Simon Law

Maxime Dupuis [email protected]

Page 21: Mercurial - PHPQuebec - December 08

mq

qinit : initialise la queue

qclone : clone un repo mq

qnew : crée un nouveau patch

qdiff : même chose que diff

qrefresh : met à jour le contenu de la patch courrante

qcommit : soumet le patch

qtop, qseries : affiche le patch courrant, les patches

qpop, qpush : applique ou dé-applique une patch

qgoto : se déplacer dans la queue de patchesMaxime Dupuis [email protected]

Page 22: Mercurial - PHPQuebec - December 08

mq

Exemples?

Maxime Dupuis [email protected]

Page 23: Mercurial - PHPQuebec - December 08

Forest

Configuration Installation paramétrisation

Commandes f* (où * est le nom d'une commande hg)

Maxime Dupuis [email protected]

Page 24: Mercurial - PHPQuebec - December 08

Forest

Exemple!

Maxime Dupuis [email protected]

Page 25: Mercurial - PHPQuebec - December 08

Questions? Commentaires?

RTFM : http://selenic.com/mercurial/wiki Pour la présentation : Autre-Chose.org Me rejoindre : [email protected]

Maxime Dupuis [email protected]

Merci!