Upload
romain-pelisse
View
643
Download
3
Embed Size (px)
DESCRIPTION
Introduction aux spécificités des gestionnaires de source distribués et description des usages nouveaux qu'ils apportent.
Citation preview
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Les gestionnaires de sources distribues et leurs casd’utilisations
Salons Solutions Linux 2009
Romain PELISSE
Atos Origin - Open Source Center
19 mars 2010
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
1 Introduction2 Avant propos3 Rappel historique
4 Controle de version distribue
5 Cas d’utilisation
6 Les solutions libres existantes
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Romain PELISSE
Architecte Open Source chez AtosOrigin depuis 2005
Contributeur PMD et XRadar
Traduction du HgBook
Charge des TDs Genie Logiciel et POO al’ESME Sudria
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
disclaimer : No Guru here
Linus a propos de Git
Brian O’Sullivan a propos deMercurial
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
De quoi s’agit il vraiment ?
Liberte
Processus de travail
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Mise au point lexicale
Revision control (RCS)
Version control System (VCS)
Software configurationmanagement (SCM)
Configuration management
Source code management
Source code control
Distributed Version ControlSystem
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Abolir les limites de CVS : SVNBitKeeper et le code de Linux
Historique des outils
SCCS (1970’s) - Fichier unique, gestion par verrouillage
RCS (1970’s) - Solution libre, Repertoire, gestion parverrouillage
CVS (1980’s) - Base sur RCS, puis en reecrit en C
depot centralacces reseaugestion par fusion (“merge”)
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Abolir les limites de CVS : SVNBitKeeper et le code de Linux
Contraintes de CVS
branchesfichiers binaires“commit” non atomiqueimpossible de renommer les fichiersmisc. (HTTP, source inmaintenable,...)
Figure: “Allez, on commit maintenant...”Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Abolir les limites de CVS : SVNBitKeeper et le code de Linux
SVN (SubVersion), Jim Blandy / Karl Fogel (2001)
“commit” transactionnel (partiellement)
gestion des fichiers binaires
deplacement de fichier
acces HTTP
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Abolir les limites de CVS : SVNBitKeeper et le code de Linux
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Abolir les limites de CVS : SVNBitKeeper et le code de Linux
Figure: “I hate CVS with apassion”
Linus Torvalds :
CVS is broken !
SVN, CVS make right ? ? ?
... mais alors comment faisait il ?
tarball et diff !
BitKeeper (jusqu’a 2005)
Git
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Modele distribueL’identifiant d’une versionRenversement
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Modele distribueL’identifiant d’une versionRenversement
Le commit comme objet unique
pas de serveur central, numero de version locale
identification par sha1
cherry-picking
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Modele distribueL’identifiant d’une versionRenversement
What just happened ! ?
fin des elites du commit ;
outil complet ;
easy fork, easy merge ! ;
commit often, atomicly ;
recherche de bugs (bissect).
“Unchained my code...”
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Modele distribueL’identifiant d’une versionRenversement
Where do we go from there ?
Decentralisation
Workflow
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Versionner ses affairesTravail deconnecteSynchroniser des branches distinctes
Versionner ses propres affaires
fonctionnement en local
aucun partage, mais possiblea posteriori
Application
debut d’un projet
recherche de configuration
faire evoluer un documentmais garder ses versions
utiliser des tags pour suivreses documents
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Versionner ses affairesTravail deconnecteSynchroniser des branches distinctes
Travail deconnecte
travailler sur un projet sans lereseau, car
pas de reseau !acces interdittrop lent/lourd
disposer de l’historique (bissect !)
faire un ensemble de commits etles soumettre en une fois
Application
evolution synchrone
bugfixing dans l’avion/train
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Versionner ses affairesTravail deconnecteSynchroniser des branches distinctes
Synchroniser des branches distinctes
plusieurs serveurs centraux
site physiques distinctsplusieurs architectures cibles
disposer de l’historique (bissect !)
serie de commit atomique
transplant
scalability
Application
evolution synchrone
sites physiques deconnecte
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
/ Git Mercurial BazaarVersion 1.55 1.2 1.3.1SLOC 130550 38172 79864Technologies C Python PythonModele Snapshot Changeset Snapshot
Commit atomique
Merge file renames
Revisions signee Partiel
Suivi des mergePartial checkout submodules Prevu/extensions PrevuUtilisation Complexe Tres Simple SimpleBase utilisateur Grande Grande Reduite... ... ... ...
Informations extraites de http ://www.infoq.com/articles/dvcs-guide.
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Comment choisir son outil ?
definir le mode de travail
contexte d’utilisation
evualuation QSOS
methodologie Open Sourcededie aux logiciels Open Sourcetemplate DVCSevaluation outils
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Quelques references
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 distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas d’utilisation
Les solutions libres existantes
Quelques exemples de projet ayant adopte un DVCS...
Linux (Git)
Python (Mercurial)
OpenJDK (Mercurial)
gnu emacs (Bazaar)
Firefox (Mercurial)
Romain PELISSE Les gestionnaires de sources distribues et leurs cas d’utilisations
AgendaIntroduction
Avant proposRappel historique
Controle de version distribueCas 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 distribues et leurs cas d’utilisations