BRAINOMICS A management system for exploring and merging heterogeneous brain ...
Historique évolutif avec Mercurial - Pyconfr 2012
1. Historique Obsolescence Distribution Évolve
Historique évolutif avec Mercurial
Pierre-Yves David
25 septembre 2012
Pierre-Yves David- Historique évolutif avec Mercurial
1 / 23
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 / 23
3. Historique Obsolescence Distribution Évolve
Historique
Crédit epSos.de : Creative Common Attribution
Pierre-Yves David- Historique évolutif avec Mercurial
3 / 23
4. Historique Obsolescence Distribution Évolve
Pierre-Yves David- Historique évolutif avec Mercurial
4 / 23
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 / 23
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 / 23
7. 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
7 / 23
8. Historique Obsolescence Distribution Évolve
Obsolescence
Crédit Kenn Wilson : Creative Common Attribution, Non-commercial, Share Alike
Pierre-Yves David- Historique évolutif avec Mercurial
8 / 23
9. 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
9 / 23
10. 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
10 / 23
11. 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
11 / 23
12. Historique Obsolescence Distribution Évolve
Distribution
Crédit Arenamontanus : Creative Common Attribution Non-commercial
Pierre-Yves David- Historique évolutif avec Mercurial
12 / 23
13. 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
13 / 23
14. 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
14 / 23
15. 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
15 / 23
16. 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
16 / 23
17. 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
17 / 23
18. Historique Obsolescence Distribution Évolve
Instabilité
un simple rebase
C'
C
B' B'
A' A'
Z Z
Pierre-Yves David- Historique évolutif avec Mercurial
18 / 23
19. 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
19 / 23
20. 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
20 / 23
21. Historique Obsolescence Distribution Évolve
Évolve
Crédit Mark Witton : Creative Common Attribution, Non-commercial, Share Alike
Pierre-Yves David- Historique évolutif avec Mercurial
21 / 23
22. 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
22 / 23
23. Historique Obsolescence Distribution Évolve
Question ?
Pierre-Yves David- Historique évolutif avec Mercurial
23 / 23