Historique Obsolescence Distribution Évolve
Historique évolutif avec Mercurial
Pierre-Yves David
OSDC.fr, Octobre 2012
1 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Historique
Crédit epSos.de : Creative Common Attribution
3 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
4 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Pourquoi et comment ?
ReproduireTracer les modifications
Contenu (fichiers)Métadonné (qui, quand, pourquoi)Arborescence (où)
Identifiant (sha)
5 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Mieux vaut avoir de l’ordre.
Version 1.33.7
New big feature
Small fix
Version 1.33.7
Small fix
New big feature
7 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
8 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Fonctionnalité avancées et optionnelle
Une complexité progressive est primordiale !
9 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Obsolescence
Crédit Kenn Wilson : Creative Common Attribution, Non-commercial, Share Alike
10 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
11 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
12 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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...
13 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Distribution
Crédit Arenamontanus : Creative Common Attribution Non-commercial
14 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
15 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
16 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
17 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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''
18 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
19 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Instabilitéun simple rebase
Z
B'
A'
C
Z
B'
A'
C'
20 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Tardifune simple différence
v4.2
A
Z
A'
v4.2
A
Z
Aᵟ
21 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Divergence
Un simple merge
A
Z
B'B''
A
Z
B'B''
B*
B*
22 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Évolve
Crédit Mark Witton : Creative Common Attribution, Non-commercial, Share Alike
23 / 25Pierre-Yves David- Historique évolutif avec Mercurial
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
24 / 25Pierre-Yves David- Historique évolutif avec Mercurial
Historique Obsolescence Distribution Évolve
Question ?
25 / 25Pierre-Yves David- Historique évolutif avec Mercurial