git développez autrement
TRANSCRIPT
DÉVELOPPEZ AUTREMENT
RETOURD'EXPÉRIENCE“pourquoi je me suis intéressé à GIT”
LE CONTEXTE2008, chez un éditeur de soft au luxembourgLe produit est sous SubversionDifférentes versions parralèlles à maintenir (3.9, 4.0,etc.)Des versions customs pour certains clientsApplication découpée en modulesEquipes de développement dans différents sites (LU,FR, ZA, SP)Besoin de développer off-line (dans l'avion, chez unclient, etc. )
LE CHOIX DE GITDistribuéWorkflow adaptableIntégrations avec nos outils (forge, PIC, etc.)
MISE EN PLACEWorkflow basé sur des topic-branches:un ticket = une brancheLes versions de maintenance sur des branches à longtermeRoles d'intégrateurs
CONTSTATPremières semaines difficles (notamment les merges)pour les non-teckos, mais réglé par une formationinterne d'une demi journéeOutils s'adapte aux processus en places (et nonl'inverse)Productivité et qualité amélioré après quelquessemaines.
HISTORIQUE“GIT (noun): a person who is deemed to be
despicable or contemptible”
2005Linus Torvalds initie le projet pour le Kernel Linux car il a
besoin de changer de CVS (BitKeeper) rapidement.
Il décide d'arrêter Linux tant que ce n'est pas fait.
DESIGNDistribuéSûre (aucune perte de données)RapideEt surtout :prendre CVS comme exemple de ce qu'il ne faut pas faire(ie. Subversion)
RÉALISATIONDémarré le 3 avril 2005Annoncé le 6 avril 20051ère release du Kernel avec GIT, le 16 juin 2005Le 26 juillet, le projet passe en maintenance et passedans les mains de Junio Hamano (toujours mainteneur).
CARACTÉRITIQUESPRINCIPALES
“Au final c'est quoi GIT?”
DVCSComplètement distribuéEn ligne de commandeIl n'utilise pas de deltas mais des "packfiles", ce qui ledifférencie des autres DCVSSupport de gros projetsFait pour le merge et la gestion des branchesOrienté boite à outilsBien intégré (par exemple, utilise des protocolesexistants)
DELTAS
PACKFILES
HISTORIQUE
FONCTIONNEMENT“C'est compliqué?”
LES BASESToujours avoir à l'esprit que GIT est distribué
Une sheat cheet intérative
LES BRANCHES...
... LES BRANCHESTypes
LocalRemoteLocal tracking Remote
UtilisationTopic branchesLong term branchesWorflow based branches
Statégies de fusionMergeRebaseCherry pick
MERGE...
...MERGE
GIT FLAVOURS“Killer features”
git stash : la cachette
git rebase : faire le ménage
git cherry-pick : la ceuillette aux commits
git submodules : travailler avec plusieurs dépôts
git commit --amend : corriger un commit
git bisect : l'arme ultime pour isoler le commit
fautif
WORKFLOWS“Je fait ce qu'il me plait...”
SUBVERSION-STYLE WORKFLOWUn dépots distant qui centralise les dépôts locaux.
Attention aux merges!
INTEGRATION MANAGER WORKFLOWUne seule personne (l'intégration manager) fait les merges
et commit vers le blessed repository
DICTATOR AND LIEUTENANTS WORKFLOWModèle à la Linux Kernel.
Pour les gros projets
TOOLS
SCM: git-svn, git-cvs, subgit, etc.GUI: TortoiseGit, gitg, giggle, SourceTree, etc.Cloud/Web: Unfuddle, BitBucket, SourceForge, etc.Admin: Gitorious, Gitblit, etc.Entreprise: Github, Atlassion Stash, etc.Kikkoolol: Gource
GITHUB
RÉFÉRENCES
WEBgit-scm.comgit.wiki.kernel.org