Pour cette dernière session de 2010, le Normandy Jug accueille David Gageot CTO de la société Algodeal pour nous présenter ![]()
Git fonctionne sans serveur et peut être utiliser en mode déconnecté. David commence par écorné la concurrence, notamment subversion, et sa première action est de nous « flashouiller » pour que l’on oublie l’ensemble de nos connaissances sur les gestionnaires de sources.
Pragmatisme, on commence directement par une démo de git bisect, la recherche dichotomique . Il nous montre comment Git permet de retrouver le commit qui a casé notre build maven (par exemple). En utilisant la dicotomie, Git est capable en quelques étapes de retrouver le commit fautif, là où il aurait fallu plusieurs heures pour identifier le problème manuellement. Git exploite son historique et ne se contente pas d’archiver les sources, il nous offre les outils pour en profiter pleinement de cette base de connaissance.
Nous abordons, ensuite, la gestion de configuration sans serveur centralisé. David nous montre comment en 3 actions nous pouvons ajouter un projet dans le gestionnaire de source :
- git init
- git add .
- git commit -m ‘commentaire’
et le projet est initialisé !
Ensuite David nous explique comment partager nos sources via la commande git clone. Mais l’approche est déroutante lorsque l’on a l’habitude de commiter sur un serveur central!
Il nous présente ensuite, comment Linus Torvalds utilise des cercles de confiances pour faciliter l’administration et la gestion des sources de Linux au travers du mécanisme du pull, en effet personne n’a accès en écriture au repository des autres et on se passe donc d’une gestion fine de droits d’accès à un serveur central, comme pour subversion par exemple.
Cependant il est tout à fait possible, pour des petites équipes, de ne pas utiliser le mode de fonctionnement peer-to-peer de git et de continuer à fonctionner avec un serveur centralisé comme avec subversion ou cvs.
David nous parle de Github et nous invite à commencer à participer à des projets open source. En effet cela n’a jamais était aussi simple de récupérer et forker une branche d’un projet et de proposer au gestionnaire du projet initiale une nouvelle feature qu’il n’aura plus qu’à puller si elle lui convient.
C’est reparti avec une nouvelle démo basée sur un véritable projet open source, avec une vidéo sympa faite avec gource montrant l’ensemble des commits réaliser par un ensemble de commiter sur le projets.
Le merge omniscient :
Eclipse, subervsion et les plugins sont fortement mis en cause et notamment la gestion du refactoring violent de code qu’ils sont incapables de gérer correctement.
Autre exemple comment changer en masse la structure des packages de l’ensemble du projet ? Ou bien comment découper un projet maven en sous projet?
On refactor le code avec un commande shell par exemple et il suffit juste d’un git add . et git commit, analyse, merge les modifications automatiquement et le tour est joué.
Mais comment ça marche ? Comment git détecte automatiquement le renommage d’un fichier par exemple ?
Déjà git ne fonctionne par fichier mais sur le contenu. Avec ce mode fonctionnement, git est capable de détecter facilement le déplacement par comparaison du contenu, de même pour une action de renommage + déplacement, il va détecter que le fichier correspond à 90% à l’ancien et il va donc identifier que le fichier a été déplacé et modifié.
Le build incassable :
En 12 lignes de codes, David nous présente le build incassable avec l’utilisation d’un build privé qui commit automatiquement sur le repository partagé lorsque tous les tests sont ok et tout ça sur le poste de développement! Plus besoin de chaine d’intégration continue … Bon ok là ça se discute car une intégration ne fait pas que le build
En bref, une très bonne présentation que ça soit sur le contenu comme sur le rythme. David a su nous captiver et je pense que nous serons nombreux à basculer rapidement sur ce gestionnaire de sources pour nos projets très prochainement!
Quelques références : Pro Git (gratuit en pdf), l’outil Git X sur mac …







