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

Historique évolutif avec Mercurial - Pyconfr 2012

  • Upload
    logilab

  • View
    360

  • Download
    1

Embed Size (px)

DESCRIPTION

Présentation par Pierre-Yves David (@marmoute) effecuté pour Logilab à PyconFR 2012 http://www.pycon.fr/2012/ http://www.logilab.org/blogentry/107686

Citation preview

Page 1: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Historique évolutif avec Mercurial

Pierre-Yves David

25 septembre 2012

1 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 2: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Mercurial ?

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

2 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 3: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Historique

Crédit epSos.de : Creative Common Attribution

3 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 4: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

4 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 5: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Pourquoi et comment ?

ReproduireTracer les modifications

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

Identifiant (sha)

5 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 6: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Tout changesets n’est pas bon à dire

Mange un élephant

Mange avec un élephant

Mange aveq un éléphant

Mange avec Babar

Mange un élephant

Mange avec un éléphant

Mange avec Babar

6 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 7: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Phases : Passé contre présent

Historique

Passé + PrésentPrésent : En formation

Passé : Immutable

Éditeur de changeset

créer : commitbouger : rebaseajouter : amendretirer : uncommit

supprimer : prunegrouper : fold

tout en un : histedit

7 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 8: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Obsolescence

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

8 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 9: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

On ne modifie pas l’histoire !

";Alice;Babar"⟶ 19b08111

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

"6fcdd7fe;Bob;Babar"⟶ebc2b5a1

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

9 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 10: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

On réécrit l’histoire !

";Alice;Babar"⟶ 19b08111

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

"6d9e1549;Bob;Babar"⟶dda72e36

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

10 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 11: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Marqueur d’obsolescence (hg-2.3)

Marqueur d’obsolescenceprécurseurs (obsolète)successeurs (nouveau)dateauteur

Méta historique : (court terme)différencelogsauvegarde de donnéestraitement automatique...

11 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 12: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Distribution

Crédit Arenamontanus : Creative Common Attribution Non-commercial

12 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 13: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

La grande distribution est un problème

Ajout uniquement

B

A

A

B

A

+ =B

A

B

A

+ =B

A

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

13 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 14: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

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

Z

B'

A'

Local

B

A

Z

C

Distant

Z

B'

A'

C

final = instable

B

A

Z

initial

14 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 15: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

TardifL’historique obsolète est devenu indispensable

Local

Distant

final = tardif

A

Z

Z

A'initial

v4.2

A

Z

A'

v4.2

A

Z

15 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 16: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Divergence

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

Local

Distant

final = divergentinitial

B

A

Z

A

Z

B'

A

Z

B''

A

Z

B'B''

16 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 17: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

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

Outils

Phases⇒ Prévenir

Historique d’obsolescence⇒ Diagnostique⇒ Résolution

17 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 18: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Instabilitéun simple rebase

Z

B'

A'

C

Z

B'

A'

C'

18 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 19: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Tardifune simple différence

v4.2

A

Z

A'

v4.2

A

Z

Aᵟ

19 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 20: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Divergence

Un simple merge

A

Z

B'B''

A

Z

B'B''

B*

B*

20 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 21: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Évolve

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

21 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 22: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Oui, mais quand ?

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

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

22 / 23Pierre-Yves David- Historique évolutif avec Mercurial

Page 23: Historique évolutif avec Mercurial - Pyconfr 2012

Historique Obsolescence Distribution Évolve

Question ?

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