SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Historique      Obsolescence                    Distribution                               Évolve




             Historique évolutif avec Mercurial


                         Pierre-Yves David




                      OSDC.fr, Octobre 2012




                                   Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                             1 / 25
Historique   Obsolescence                   Distribution                               Évolve


                      Mercurial ?




               Gestionnaire de Version Décentralisé
               Écrit en python
               Créé en 2005 par un hacker Linux (Matt Mackall)
               Simple, (très) puissant, rapide
               Multi plateforme




                               Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                         2 / 25
Historique   Obsolescence                           Distribution                               Évolve


                       Historique




              Crédit epSos.de : Creative Common Attribution

                                       Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                 3 / 25
Historique   Obsolescence                Distribution                               Évolve




                            Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                      4 / 25
Historique                 Obsolescence                Distribution                               Évolve


                        Pourquoi et comment ?



             Reproduire
             Tracer les modifications

             Contenu
               (fichiers)
             Métadonné
                                                           Identifiant (sha)
               (qui, quand, pourquoi)
             Arborescence
               (où)




                                          Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                    5 / 25
Historique                 Obsolescence                Distribution                               Évolve


               Tout changesets n’est pas bon à dire


               Mange avec Babar



             Mange avec un élephant                    Mange avec Babar



             Mange aveq un éléphant               Mange avec un éléphant



               Mange un élephant                      Mange un élephant




                                          Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                    6 / 25
Historique             Obsolescence                Distribution                               Évolve


                  Mieux vaut avoir de l’ordre.



                Small fix                           New big feature



             New big feature                            Small fix



              Version 1.33.7                        Version 1.33.7




                                      Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                7 / 25
Historique              Obsolescence                Distribution                               Évolve


                 Phases : Passé contre présent



                                         Éditeur de changeset

      Historique                                  créer :        commit
                                               bouger :          rebase
      Passé + Présent                          ajouter :         amend
         Présent : En formation                  retirer :       uncommit
             Passé : Immutable              supprimer :          prune
                                              grouper :          fold
                                            tout en un :         histedit




                                       Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                 8 / 25
Historique                  Obsolescence                    Distribution                               Évolve


             Fonctionnalité avancées et optionnelle




             Une complexité progressive est primordiale !


                                               Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                         9 / 25
Historique                Obsolescence                             Distribution                               Évolve


                                  Obsolescence




             Crédit Kenn Wilson : Creative Common Attribution, Non-commercial, Share Alike

                                                      Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                                10 / 25
Historique       Obsolescence                        Distribution                               Évolve


             On ne modifie pas l’histoire !


                         "6fcdd7fe;Bob;Babar"
                         ⟶ebc2b5a1


                 "925d8319;Alice;Babar,Celeste,flore"
                 ⟶ 6fcdd7fe


                    "19b08111;Alice;Babar,Celeste"
                    ⟶ 925d8319


                                ";Alice;Babar"
                                ⟶ 19b08111




                                        Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                  11 / 25
Historique   Obsolescence                        Distribution                               Évolve


             On réécrit l’histoire !


                                             "6d9e1549;Bob;Babar"
                                             ⟶dda72e36


                                    "1a25964c;Alice;Babar,Celeste,Flore"
                                    ⟶ 6d9e1549


                                       "19b08111;Bob;Babar,Celeste"
                                       ⟶ 1a25964c



                            ";Alice;Babar"
                            ⟶ 19b08111




                                    Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                              12 / 25
Historique                 Obsolescence                Distribution                               Évolve


                Marqueur d’obsolescence (hg-2.3)


      Marqueur d’obsolescence
             précurseurs (obsolète)
             successeurs (nouveau)
             date
             auteur

      Méta historique : (court terme)
             différence
             log
             sauvegarde de données
             traitement automatique
             ...




                                          Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                    13 / 25
Historique           Obsolescence                            Distribution                               Évolve


                               Distribution




             Crédit Arenamontanus : Creative Common Attribution Non-commercial

                                                Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                          14 / 25
Historique                     Obsolescence                   Distribution                               Évolve


                 La grande distribution est un problème


      Ajout uniquement

         B                            B            B                 B                  B
                  +      A      =                        +                      =
             A                        A            A                 A                  A


      L’enfer c’est les autres
                 Pas de contrôle absolu,
                 Distribution des conséquences




                                                 Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                           15 / 25
Historique                 Obsolescence                             Distribution                               Évolve


                                     Instabilité
      Développement distant à l’historique obsolète

                                          C


                                          B
                                                                            C

                                          A                                          B'
                   B
                                          Z                                          A'
                   A
                                      Distant

                   Z                                  B'                    Z

                 initial                                                 final = instable
                                                      A'




                                          Z

                                              Local



                                                       Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                                 16 / 25
Historique             Obsolescence                         Distribution                               Évolve


                                        Tardif
      L’historique obsolète est devenu indispensable

                                      v4.2


                                       A

                                                                           v4.2
                                       Z                                               A'
               A
                                 Distant                                     A

               Z
                                               A'                            Z
             initial
                                                                        final = tardif


                                       Z

                                           Local

                                               Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                         17 / 25
Historique             Obsolescence                             Distribution                               Évolve


                                   Divergence
      Et si deux personnes réécrivent le même changeset

                             B''




                                      A                            B''              B'
               B

                                      Z
               A
                                   Distant                                  A

               Z                              B'                            Z
             initial
                                                                    final = divergent


                                      A


                                      Z
                                          Local

                                                   Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                             18 / 25
Historique             Obsolescence                   Distribution                               Évolve


                   Si il n’y avait pas de solution,
                   il n’y aurait pas de problème



      Outils

      Phases                          Historique d’obsolescence
      ⇒ Prévenir                      ⇒ Diagnostique
                                      ⇒ Résolution




                                         Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                   19 / 25
Historique               Obsolescence                 Distribution                               Évolve


                                   Instabilité
      un simple rebase


                                                               C'
                     C

                                   B'                           B'


                                   A'                           A'




                     Z                         Z

                                         Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                   20 / 25
Historique              Obsolescence                    Distribution                               Évolve


                                       Tardif
      une simple différence



                                                                   Aᵟ
                  v4.2                       v4.2
                                  A'
                    A                            A


                    Z                            Z

                                           Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                     21 / 25
Historique              Obsolescence                   Distribution                               Évolve


                                Divergence

      Un simple merge


                                                                           B*

             B''        B'
                                         B*

                                   B''            B'
                   A                                                       A


                   Z                                                       Z




                                          Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                    22 / 25
Historique                Obsolescence                             Distribution                               Évolve


                                           Évolve




             Crédit Mark Witton : Creative Common Attribution, Non-commercial, Share Alike




                                                      Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                                23 / 25
Historique              Obsolescence                 Distribution                               Évolve


                          Oui, mais quand ?




      Maintenant
      hg-2.1 Sécurité (Février 2012) : Phases
      hg-2.3 Échange (Août 2012) : Obsolescence extension/expérimental
      hg-2.4 Échange (Novembre 2012) : Autonome dans cœur

      http ://mercurial.selenic.com/wiki/ChangesetsObsolescence




                                        Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                                  24 / 25
Historique   Obsolescence                Distribution                               Évolve


                      Question ?




                            Pierre-Yves David- Historique évolutif avec Mercurial
                                                                                      25 / 25

Más contenido relacionado

Más de Logilab

Pydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instrumentsPydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instrumentsLogilab
 
Présentation Logilab
Présentation LogilabPrésentation Logilab
Présentation LogilabLogilab
 
Système d'archivage électronique mutualisé
Système d'archivage électronique mutualiséSystème d'archivage électronique mutualisé
Système d'archivage électronique mutualiséLogilab
 
Utiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou dockerUtiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou dockerLogilab
 
Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21Logilab
 
Simulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industrielSimulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industrielLogilab
 
Simulagora - Salon du Bourget
Simulagora - Salon du BourgetSimulagora - Salon du Bourget
Simulagora - Salon du BourgetLogilab
 
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015Logilab
 
Study of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on SimulagoraStudy of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on SimulagoraLogilab
 
Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...Logilab
 
Battle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - CubicwebBattle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - CubicwebLogilab
 
Debconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien CristauDebconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien CristauLogilab
 
Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)Logilab
 
PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)Logilab
 
Open Legislative Data Conference 2014
Open Legislative Data Conference 2014Open Legislative Data Conference 2014
Open Legislative Data Conference 2014Logilab
 
Pylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieuxPylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieuxLogilab
 
BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...Logilab
 
Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013Logilab
 
Cubicweb lauréat Dataconnexions 2013
Cubicweb lauréat Dataconnexions 2013Cubicweb lauréat Dataconnexions 2013
Cubicweb lauréat Dataconnexions 2013Logilab
 
Migration of a computation cluster to Debian
Migration of a computation cluster to DebianMigration of a computation cluster to Debian
Migration of a computation cluster to DebianLogilab
 

Más de Logilab (20)

Pydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instrumentsPydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instruments
 
Présentation Logilab
Présentation LogilabPrésentation Logilab
Présentation Logilab
 
Système d'archivage électronique mutualisé
Système d'archivage électronique mutualiséSystème d'archivage électronique mutualisé
Système d'archivage électronique mutualisé
 
Utiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou dockerUtiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou docker
 
Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21
 
Simulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industrielSimulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industriel
 
Simulagora - Salon du Bourget
Simulagora - Salon du BourgetSimulagora - Salon du Bourget
Simulagora - Salon du Bourget
 
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
 
Study of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on SimulagoraStudy of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on Simulagora
 
Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...
 
Battle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - CubicwebBattle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - Cubicweb
 
Debconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien CristauDebconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien Cristau
 
Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)
 
PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)
 
Open Legislative Data Conference 2014
Open Legislative Data Conference 2014Open Legislative Data Conference 2014
Open Legislative Data Conference 2014
 
Pylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieuxPylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieux
 
BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...
 
Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013
 
Cubicweb lauréat Dataconnexions 2013
Cubicweb lauréat Dataconnexions 2013Cubicweb lauréat Dataconnexions 2013
Cubicweb lauréat Dataconnexions 2013
 
Migration of a computation cluster to Debian
Migration of a computation cluster to DebianMigration of a computation cluster to Debian
Migration of a computation cluster to Debian
 

OSDC 2012 mercurial evolve talk

  • 1. Historique Obsolescence Distribution Évolve Historique évolutif avec Mercurial Pierre-Yves David OSDC.fr, Octobre 2012 Pierre-Yves David- Historique évolutif avec Mercurial 1 / 25
  • 2. Historique Obsolescence Distribution Évolve Mercurial ? Gestionnaire de Version Décentralisé Écrit en python Créé en 2005 par un hacker Linux (Matt Mackall) Simple, (très) puissant, rapide Multi plateforme Pierre-Yves David- Historique évolutif avec Mercurial 2 / 25
  • 3. Historique Obsolescence Distribution Évolve Historique Crédit epSos.de : Creative Common Attribution Pierre-Yves David- Historique évolutif avec Mercurial 3 / 25
  • 4. Historique Obsolescence Distribution Évolve Pierre-Yves David- Historique évolutif avec Mercurial 4 / 25
  • 5. Historique Obsolescence Distribution Évolve Pourquoi et comment ? Reproduire Tracer les modifications Contenu (fichiers) Métadonné Identifiant (sha) (qui, quand, pourquoi) Arborescence (où) Pierre-Yves David- Historique évolutif avec Mercurial 5 / 25
  • 6. Historique Obsolescence Distribution Évolve Tout changesets n’est pas bon à dire Mange avec Babar Mange avec un élephant Mange avec Babar Mange aveq un éléphant Mange avec un éléphant Mange un élephant Mange un élephant Pierre-Yves David- Historique évolutif avec Mercurial 6 / 25
  • 7. Historique Obsolescence Distribution Évolve Mieux vaut avoir de l’ordre. Small fix New big feature New big feature Small fix Version 1.33.7 Version 1.33.7 Pierre-Yves David- Historique évolutif avec Mercurial 7 / 25
  • 8. Historique Obsolescence Distribution Évolve Phases : Passé contre présent Éditeur de changeset Historique créer : commit bouger : rebase Passé + Présent ajouter : amend Présent : En formation retirer : uncommit Passé : Immutable supprimer : prune grouper : fold tout en un : histedit Pierre-Yves David- Historique évolutif avec Mercurial 8 / 25
  • 9. Historique Obsolescence Distribution Évolve Fonctionnalité avancées et optionnelle Une complexité progressive est primordiale ! Pierre-Yves David- Historique évolutif avec Mercurial 9 / 25
  • 10. Historique Obsolescence Distribution Évolve Obsolescence Crédit Kenn Wilson : Creative Common Attribution, Non-commercial, Share Alike Pierre-Yves David- Historique évolutif avec Mercurial 10 / 25
  • 11. Historique Obsolescence Distribution Évolve On ne modifie pas l’histoire ! "6fcdd7fe;Bob;Babar" ⟶ebc2b5a1 "925d8319;Alice;Babar,Celeste,flore" ⟶ 6fcdd7fe "19b08111;Alice;Babar,Celeste" ⟶ 925d8319 ";Alice;Babar" ⟶ 19b08111 Pierre-Yves David- Historique évolutif avec Mercurial 11 / 25
  • 12. Historique Obsolescence Distribution Évolve On réécrit l’histoire ! "6d9e1549;Bob;Babar" ⟶dda72e36 "1a25964c;Alice;Babar,Celeste,Flore" ⟶ 6d9e1549 "19b08111;Bob;Babar,Celeste" ⟶ 1a25964c ";Alice;Babar" ⟶ 19b08111 Pierre-Yves David- Historique évolutif avec Mercurial 12 / 25
  • 13. Historique Obsolescence Distribution Évolve Marqueur d’obsolescence (hg-2.3) Marqueur d’obsolescence précurseurs (obsolète) successeurs (nouveau) date auteur Méta historique : (court terme) différence log sauvegarde de données traitement automatique ... Pierre-Yves David- Historique évolutif avec Mercurial 13 / 25
  • 14. Historique Obsolescence Distribution Évolve Distribution Crédit Arenamontanus : Creative Common Attribution Non-commercial Pierre-Yves David- Historique évolutif avec Mercurial 14 / 25
  • 15. Historique Obsolescence Distribution Évolve La grande distribution est un problème Ajout uniquement B B B B B + A = + = A A A A A L’enfer c’est les autres Pas de contrôle absolu, Distribution des conséquences Pierre-Yves David- Historique évolutif avec Mercurial 15 / 25
  • 16. Historique Obsolescence Distribution Évolve Instabilité Développement distant à l’historique obsolète C B C A B' B Z A' A Distant Z B' Z initial final = instable A' Z Local Pierre-Yves David- Historique évolutif avec Mercurial 16 / 25
  • 17. Historique Obsolescence Distribution Évolve Tardif L’historique obsolète est devenu indispensable v4.2 A v4.2 Z A' A Distant A Z A' Z initial final = tardif Z Local Pierre-Yves David- Historique évolutif avec Mercurial 17 / 25
  • 18. Historique Obsolescence Distribution Évolve Divergence Et si deux personnes réécrivent le même changeset B'' A B'' B' B Z A Distant A Z B' Z initial final = divergent A Z Local Pierre-Yves David- Historique évolutif avec Mercurial 18 / 25
  • 19. Historique Obsolescence Distribution Évolve Si il n’y avait pas de solution, il n’y aurait pas de problème Outils Phases Historique d’obsolescence ⇒ Prévenir ⇒ Diagnostique ⇒ Résolution Pierre-Yves David- Historique évolutif avec Mercurial 19 / 25
  • 20. Historique Obsolescence Distribution Évolve Instabilité un simple rebase C' C B' B' A' A' Z Z Pierre-Yves David- Historique évolutif avec Mercurial 20 / 25
  • 21. Historique Obsolescence Distribution Évolve Tardif une simple différence Aᵟ v4.2 v4.2 A' A A Z Z Pierre-Yves David- Historique évolutif avec Mercurial 21 / 25
  • 22. Historique Obsolescence Distribution Évolve Divergence Un simple merge B* B'' B' B* B'' B' A A Z Z Pierre-Yves David- Historique évolutif avec Mercurial 22 / 25
  • 23. Historique Obsolescence Distribution Évolve Évolve Crédit Mark Witton : Creative Common Attribution, Non-commercial, Share Alike Pierre-Yves David- Historique évolutif avec Mercurial 23 / 25
  • 24. Historique Obsolescence Distribution Évolve Oui, mais quand ? Maintenant hg-2.1 Sécurité (Février 2012) : Phases hg-2.3 Échange (Août 2012) : Obsolescence extension/expérimental hg-2.4 Échange (Novembre 2012) : Autonome dans cœur http ://mercurial.selenic.com/wiki/ChangesetsObsolescence Pierre-Yves David- Historique évolutif avec Mercurial 24 / 25
  • 25. Historique Obsolescence Distribution Évolve Question ? Pierre-Yves David- Historique évolutif avec Mercurial 25 / 25