Les gestionnaires de sources distribués et leurs cas d'utiliation - Solutions Linux 2009
1. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Les gestionnaires de sources distribu´s et leurs cas
e
d’utilisations
Salons Solutions Linux 2009
Romain PELISSE
Atos Origin - Open Source Center
19 mars 2010
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
2. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
1 Introduction 4 Contrˆle de version distribu´
o e
2 Avant propos 5 Cas d’utilisation
3 Rappel historique 6 Les solutions libres existantes
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
3. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Romain PELISSE
Architecte Open Source chez Atos
Origin depuis 2005
Contributeur PMD et XRadar
Traduction du HgBook
Charg´ des TDs G´nie Logiciel et POO `
e e a
l’ESME Sudria
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
4. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
disclaimer : No Guru here
Linus ` propos de Git
a
Brian O’Sullivan ` propos de
a
Mercurial
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
5. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
De quoi s’agit il vraiment ?
Libert´
e
Processus de travail
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
6. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Mise au point lexicale
Revision control (RCS)
Version control System (VCS)
Software configuration
management (SCM)
Configuration management
Source code management
Source code control
Distributed Version Control
System
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
7. Agenda
Introduction
Avant propos
Abolir les limites de CVS : SVN
Rappel historique
BitKeeper et le code de Linux
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Historique des outils
SCCS (1970’s) - Fichier unique, gestion par verrouillage
RCS (1970’s) - Solution libre, R´pertoire, gestion par
e
verrouillage
CVS (1980’s) - Bas´ sur RCS, puis en r´´crit en C
e ee
d´pˆt central
e o
acc`s r´seau
e e
gestion par fusion (“merge”)
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
8. Agenda
Introduction
Avant propos
Abolir les limites de CVS : SVN
Rappel historique
BitKeeper et le code de Linux
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Contraintes de CVS
branches
fichiers binaires
“commit” non atomique
impossible de renommer les fichiers
misc. (HTTP, source inmaintenable,...)
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
9. Agenda
Introduction
Avant propos
Abolir les limites de CVS : SVN
Rappel historique
BitKeeper et le code de Linux
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
SVN (SubVersion), Jim Blandy / Karl Fogel (2001)
“commit” transactionnel (partiellement)
gestion des fichiers binaires
d´placement de fichier
e
acc`s HTTP
e
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
10. Agenda
Introduction
Avant propos
Abolir les limites de CVS : SVN
Rappel historique
BitKeeper et le code de Linux
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
11. Agenda
Introduction
Avant propos
Abolir les limites de CVS : SVN
Rappel historique
BitKeeper et le code de Linux
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Linus Torvalds :
CVS is broken !
SVN, CVS make right ? ? ?
... mais alors comment faisait il ?
tarball et diff !
BitKeeper (jusqu’` 2005)
a
Figure: “I hate CVS with a Git
passion”
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
12. Agenda
Introduction
Avant propos Mod`le distribu´
e e
Rappel historique L’identifiant d’une version
Contrˆle de version distribu´
o e Renversement
Cas d’utilisation
Les solutions libres existantes
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
13. Agenda
Introduction
Avant propos Mod`le distribu´
e e
Rappel historique L’identifiant d’une version
Contrˆle de version distribu´
o e Renversement
Cas d’utilisation
Les solutions libres existantes
Le commit comme objet unique
pas de serveur central, num´ro de version locale
e
identification par sha1
cherry-picking
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
14. Agenda
Introduction
Avant propos Mod`le distribu´
e e
Rappel historique L’identifiant d’une version
Contrˆle de version distribu´
o e Renversement
Cas d’utilisation
Les solutions libres existantes
What just happened ! ?
fin des ´lites du commit ;
e
outil complet ;
easy fork, easy merge ! ;
commit often, atomicly ;
recherche de bugs (bissect).
“Unchained my code...”
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
15. Agenda
Introduction
Avant propos Mod`le distribu´
e e
Rappel historique L’identifiant d’une version
Contrˆle de version distribu´
o e Renversement
Cas d’utilisation
Les solutions libres existantes
Where do we go from there ?
D´centralisation
e
Workflow
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
16. Agenda
Introduction
Avant propos Versionner ses affaires
Rappel historique Travail d´connect´
e e
Contrˆle de version distribu´
o e Synchroniser des branches distinctes
Cas d’utilisation
Les solutions libres existantes
Versionner ses propres affaires
fonctionnement en local
aucun partage, mais possible
` posteriori
a
Application
d´but d’un projet
e
recherche de configuration
faire ´voluer un document
e
mais garder ses versions
utiliser des tags pour suivre
ses documents
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
17. Agenda
Introduction
Avant propos Versionner ses affaires
Rappel historique Travail d´connect´
e e
Contrˆle de version distribu´
o e Synchroniser des branches distinctes
Cas d’utilisation
Les solutions libres existantes
Travail d´connect´
e e
travailler sur un projet sans le
r´seau, car
e
pas de r´seau !
e
acc`s interdit
e
trop lent/lourd
disposer de l’historique (bissect !)
faire un ensemble de commits et
les soumettre en une fois
Application
´volution synchrone
e
bugfixing dans l’avion/train
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
18. Agenda
Introduction
Avant propos Versionner ses affaires
Rappel historique Travail d´connect´
e e
Contrˆle de version distribu´
o e Synchroniser des branches distinctes
Cas d’utilisation
Les solutions libres existantes
Synchroniser des branches distinctes
plusieurs serveurs centraux
site physiques distincts
plusieurs architectures cibles
disposer de l’historique (bissect !)
s´rie de commit atomique
e
transplant
scalability
Application
´volution synchrone
e
sites physiques d´connect´
e e
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
19. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
/ Git Mercurial Bazaar
Version 1.55 1.2 1.3.1
SLOC 130550 38172 79864
Technologies C Python Python
Mod`le
e Snapshot Changeset Snapshot
Commit atomique
Merge file renames
R´visions sign´e
e e Partiel
Suivi des merge
Partial checkout submodules Pr´vu/extensions
e Pr´vu
e
Utilisation Complexe Tr`s Simple
e Simple
Base utilisateur Grande Grande R´duite
e
... ... ... ...
Informations extraites de http ://www.infoq.com/articles/dvcs-guide.
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
20. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Comment choisir son outil ?
d´finir le mode de travail
e
contexte d’utilisation
´vualuation QSOS
e
m´thodologie Open Source
e
d´di´ aux logiciels Open Source
e e
template DVCS
´valuation outils
e
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
21. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Quelques r´f´rences
ee
http ://www.selenic.com/mercurial/wiki/
http ://www.infoq.com/articles/dvcs-guide
http ://qsos.org/
http ://www.russellbeattie.com/blog/distributed-revision-
control-systems-git-vs-mercurial-vs-svn
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
22. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Quelques exemples de projet ayant adopt´ un DVCS...
e
Linux (Git)
Python (Mercurial)
OpenJDK (Mercurial)
gnu emacs (Bazaar)
Firefox (Mercurial)
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e
23. Agenda
Introduction
Avant propos
Rappel historique
Contrˆle de version distribu´
o e
Cas d’utilisation
Les solutions libres existantes
Sources des images
http ://commons.wikimedia.org/wiki/File :Git-logo.svg
http ://www.flickr.com/photos/soldiersmediacenter/3130119367/
http ://fr.wikipedia.org/wiki/Fichier :Linus Torvalds.jpeg
http ://www.flickr.com/photos/caveman 92223/3102228691/sizes/o/
http ://www.flickr.com/photos/doberagi/1404539812/sizes/l/
http ://www.sikh-history.com/sikhhist/gurus/nanak5.html
http ://flickr.com/photos/kliefi/2303269060/
http ://flickr.com/photos/andreasmarx/38313268/
http ://flickr.com/photos/vogelium/330566664/
http ://openclipart.org/media/files/jean victor balin/8656
http ://www.flickr.com/photos/c-remy/2373123435/
http ://www.flickr.com/photos/sharynmorrow/4797654/
http ://www.flickr.com/photos/mvisosky/2683222011/
http ://www.flickr.com/photos/wolfsoul/2072332105/
Romain PELISSE Les gestionnaires de sources distribu´s et leurs cas d’utilisations
e