SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
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      mdupuis@autre-chose.org
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      mdupuis@autre-chose.org
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         mdupuis@autre-chose.org
SCV Centralisé
    Serveur central
    Sauvegarde = Check In (commit)
    Désavantages (branches/merges)

     Exemples de SCV :
     SVN, CVS




Maxime Dupuis      mdupuis@autre-chose.org
SCV Distribué

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




Maxime Dupuis      mdupuis@autre-chose.org
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          mdupuis@autre-chose.org
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       mdupuis@autre-chose.org
Différents SCVD

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




Maxime Dupuis     mdupuis@autre-chose.org
Git

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




Maxime Dupuis         mdupuis@autre-chose.org
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       mdupuis@autre-chose.org
Mercurial

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




Maxime Dupuis      mdupuis@autre-chose.org
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         mdupuis@autre-chose.org
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 → merge
Maxime Dupuis            mdupuis@autre-chose.org
Commandes



                   Exemple!




Maxime Dupuis   mdupuis@autre-chose.org
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            mdupuis@autre-chose.org
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            mdupuis@autre-chose.org
Commandes supplémentaires



                  Exemples?




Maxime Dupuis   mdupuis@autre-chose.org
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         mdupuis@autre-chose.org
Hgsvn
    http://pypi.python.org/pypi/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

Maxime Dupuis           mdupuis@autre-chose.org
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         mdupuis@autre-chose.org
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 patches
Maxime Dupuis             mdupuis@autre-chose.org
mq



                  Exemples?




Maxime Dupuis   mdupuis@autre-chose.org
Forest

       Configuration
               Installation
               paramétrisation



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



Maxime Dupuis                  mdupuis@autre-chose.org
Forest



                   Exemple!




Maxime Dupuis   mdupuis@autre-chose.org
Questions? Commentaires?

    RTFM : http://selenic.com/mercurial/wiki
    Pour la présentation : Autre-Chose.org
    Me rejoindre : mdupuis@autre-chose.org



                        Merci!


Maxime Dupuis      mdupuis@autre-chose.org

Más contenido relacionado

La actualidad más candente

07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns
Noël
 
Installation et-configuration-d-un a175
Installation et-configuration-d-un a175Installation et-configuration-d-un a175
Installation et-configuration-d-un a175
Maryem Maryemtii
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Aurelien Navarre
 
07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns
Noël
 

La actualidad más candente (17)

Installation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abidInstallation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abid
 
Debian Packaging tutorial (version française)
Debian Packaging tutorial (version française)Debian Packaging tutorial (version française)
Debian Packaging tutorial (version française)
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns
 
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Installation et-configuration-d-un a175
Installation et-configuration-d-un a175Installation et-configuration-d-un a175
Installation et-configuration-d-un a175
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 
lpi 101 notes de cours
lpi 101 notes de courslpi 101 notes de cours
lpi 101 notes de cours
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns
 
LVM "Linux "
LVM  "Linux "LVM  "Linux "
LVM "Linux "
 
L’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueL’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en Pratique
 
Linux commandes
Linux commandesLinux commandes
Linux commandes
 
Guide complet linux
Guide complet linuxGuide complet linux
Guide complet linux
 
Meetup CMS Rubedo 12 décembre 2013
Meetup CMS Rubedo 12 décembre 2013Meetup CMS Rubedo 12 décembre 2013
Meetup CMS Rubedo 12 décembre 2013
 

Similar a Mercurial - PHPQuebec - December 08

Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de version
goldoraf
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 

Similar a Mercurial - PHPQuebec - December 08 (20)

Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de version
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnect
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pas
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
 
git.pdf
git.pdfgit.pdf
git.pdf
 
Hadoop MapReduce.docx
Hadoop  MapReduce.docxHadoop  MapReduce.docx
Hadoop MapReduce.docx
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 Omiossec
 
Le système de versioning git
Le système de versioning gitLe système de versioning git
Le système de versioning git
 

Mercurial - PHPQuebec - December 08

  • 1. 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 mdupuis@autre-chose.org
  • 2. 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 mdupuis@autre-chose.org
  • 3. 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 mdupuis@autre-chose.org
  • 4. SCV Centralisé  Serveur central  Sauvegarde = Check In (commit)  Désavantages (branches/merges) Exemples de SCV : SVN, CVS Maxime Dupuis mdupuis@autre-chose.org
  • 5. SCV Distribué  Chaque repo connait l'historique  On parle d'équivalence Maxime Dupuis mdupuis@autre-chose.org
  • 6. 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 mdupuis@autre-chose.org
  • 7. 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 mdupuis@autre-chose.org
  • 8. Différents SCVD  Git -- Linus Torvalds  Bazaar -- Canonical  Mercurial -- Matt Mackall Maxime Dupuis mdupuis@autre-chose.org
  • 9. Git  Écrit en C  le plus rapide  Projets : Kernel linux, OLPC, RoR, projets Ruby  Hébergement : GitHub.com  Comple(t|xe) Maxime Dupuis mdupuis@autre-chose.org
  • 10. 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 mdupuis@autre-chose.org
  • 11. Mercurial  Écrit en Python  Relativement rapide, léger  Projets : Mozilla, Netbeans, projets Python  Hébergement : FreeHG.org, Intuxication (fr)  Similaire à SVN Maxime Dupuis mdupuis@autre-chose.org
  • 12. 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 mdupuis@autre-chose.org
  • 13. 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 → merge Maxime Dupuis mdupuis@autre-chose.org
  • 14. Commandes Exemple! Maxime Dupuis mdupuis@autre-chose.org
  • 15. 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 mdupuis@autre-chose.org
  • 16. 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 mdupuis@autre-chose.org
  • 17. Commandes supplémentaires Exemples? Maxime Dupuis mdupuis@autre-chose.org
  • 18. 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 mdupuis@autre-chose.org
  • 19. Hgsvn  http://pypi.python.org/pypi/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 Maxime Dupuis mdupuis@autre-chose.org
  • 20. 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 mdupuis@autre-chose.org
  • 21. 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 patches Maxime Dupuis mdupuis@autre-chose.org
  • 22. mq Exemples? Maxime Dupuis mdupuis@autre-chose.org
  • 23. Forest  Configuration  Installation  paramétrisation  Commandes  f* (où * est le nom d'une commande hg) Maxime Dupuis mdupuis@autre-chose.org
  • 24. Forest Exemple! Maxime Dupuis mdupuis@autre-chose.org
  • 25. Questions? Commentaires?  RTFM : http://selenic.com/mercurial/wiki  Pour la présentation : Autre-Chose.org  Me rejoindre : mdupuis@autre-chose.org Merci! Maxime Dupuis mdupuis@autre-chose.org