Les gestionnaires de configuration distribués ont vraiment la côte en ce moment, et en particulier Git.
Pour l'avoir testé, il faut bien admettre que ces outils simplifient énormément le processus de développement, en permettant de découpler très facilement les différentes tâches sur lesquelles on travaille dans autant de branches de développement.
Sur SVN, la gestion des branches n'est pas aisée. Donc dans la pratique, quand on travaille sur plusieurs évolutions (sous Eclipse) :
- Soit on duplique le projet dans son espace de travail (avec un projet par évolution) : c' est certainement encore la manière la plus propre de faire, bien qu'un peu lourde à mettre en oeuvre.
- Soit on travaille dans un unique projet : on n'a alors pas de moyen évident de distinguer quelle modification de code correspond à quelle évolution.
Cas d'application concret : en local, un développeur travaille sur deux fonctionnalités dans son projet, dont une est terminée et doit être commitée pour être embarquée dans la livraison du jour. Il faut alors retrouver quels sont les fichiers correspondants, pour faire un commit partiel du projet.
Autant dire que les risques de faire une erreur (oubli de fichier ou commit d'un fichier de l'autre évolution) sont loin d'être négligeables... et conduisent donc souvent à devoir faire un deuxième (quand ce n'est pas un troisième) commit correctif.
Ce scénario peut paraître un peu catastrophique, mais il peut pourtant arriver (et peut-être plus souvent qu'on ne le croit).
Quelques avantages de Git :
- il permet de résoudre le problème mentionné ci-dessus : la gestion locale des branches permet d'en créer et d'en changer très rapidement, sans avoir à dupliquer le projet (entre autres fonctionnalités).
- il est beaucoup plus souple que SVN dans ses possibilités de revenir en arrière en cas d'erreur : il permet par exemple "d'amender" un commit déjà effectué.
- une fois que plusieurs fonctionnalités sont terminées, les possibilités de fusion (merge) des branches sont beaucoup plus puissantes que celle de Git, avec plusieurs stratégies de résolution des conflits (fast forward, etc.)
Tout ceci est très bien sur le papier, mais passons maintenant à l'application en entreprise, où la gestion de configuration des projets est gérée de manière centralisée par SVN (à Alcion Group, par exemple). Même si on est convaincu par les avantages des DVCS, l'impact sur le SI est tel que ça peut difficilement être mis en place.
Mais là encore, Git peut nous sauver. Il peut en effet être utilisé en local sur les postes de développement, et s'interfacer avec le serveur SVN de l'entreprise. Les développeurs bénéficient ainsi de ses avantages, pour un faible impact sur l'infrastructure.
Nicolas de loof explique très bien les principes d'utilisation de Git avec SVN. Afin d'adapter ces principes à nos environnements de développement, j'ai rédigé un tutoriel d'application pratique pour Eclipse.
Pour commencer et découvrir Git, je vouc recommande :
- ''Why Git is better than X ?'' : la liste des avantages de Git sur les autres gestionnaires de configuration
- un tutoriel d'introduction
- Le manuel d'utilisation officiel
Et, pour aller plus loin, quelques lectures studieuses... et un peu plus volumineuses :
- Le ''Git Community Book''
- ''Git Magic'', un autre livre en ligne
- ''ProGit'', le plus gros livre en ligne disponible sur ce sujet, et certainement le plus complet
Jeudi 21 février à 18h30 au siège
Notre vie d'ingénieur logiciel est ponctuée de projets qui se passent parfois très bien, parfois malheureusement très mal, et le plus souvent à peu près bien (ou à peu près mal).
Merci à Aurélien Drouet pour son intervention convaincante :
Les grands de l'e-business rencontrent des problématiques logicielles sévères. Cependant, elles ne sont pas spécifiques aux mastodontes : elles se déclinent à toutes les échelles.
J'ai travaillé quelques mois chez
Vu sur
Depuis le 5 juin, on peut enfin jouer aux 17 jeux de tirage, de grattage et de pronostics de la Française des Jeux sur le web (