Atlassian a fait le grand bond en avant vers Git à la fin de 2012. Fort de leur expérience, ils nous livrent une liste des bonnes pratiques qui font leur succès et qui fonctionneront chez vous.
Git chez Atlassian
Dans leur esprit d’ouverture et de partage de connaissances, les équipes d’Atlassian s’emploient régulièrement à expliquer leurs produits et récemment leurs pratiques techniques aussi. A la suite des articles de blogs détaillant et analysant leur passage à Git cet été, elles se sont lancées dans une série de Webinars pour présenter en détail cette technologie. Récemment, Samuel Le Berrigaud, développeur sur HipChat et Ambassadeur Atlassian en France, nous a livré le webinar Git Workflow. Et dans la langue de Voltaire s’il vous plaît.
Dépôt centralisé
Même si Git permet de sortir du paradigme de centralisation du dépôt, il s’avère être le plus adapté aux entreprises. Les projets de logiciels libres ou open source s’accommodent très bien des modèles type Intégrateur ou Dictateur, car leurs listes des contributeurs n’est pas maitrisable facilement. Pour les entreprises qui connaissent leurs collaborateurs par contre, le risque de congestion au niveau de l’intégration devient trop important et le besoin de décentralisation est rarement important.
Feature branches
C’est l’un des gros avantages de Git sur SVN. Nous avons tous connus l’appréhension du merge. Nos belles fonctionnalités toutes fraîches confrontées à l’imparable séance de gestion des conflits. Cette gestion est bien souvent réduite à peau de chagrin par un Git qui nous mâche le travail très largement. Et si vous parvenez à contenir la taille de vos user stories, elle sera bien souvent entièrement gérée par Git.
Autre avantage de l’utilisation de ces feature branches, et non des moindres, elle permettent aux développeurs de remonter leur travail périodiquement sans avoir à se soucier de bloquer leurs collègues, limitant considérablement les risques de pertes de code (entre autre).
Pull Requests
La bonne façon de garder un contrôle de qualité fort sur le dépôt de référence passe par les pull requests que l’on accompagne de code review. Le logiciel Stash, développé par Atlassian, permet d’automatiser ces codes review pour fluidifier le processus. Il permet aussi de définir finement les contrôles d’accès sur les dépôts qui peuvent être délicats à mettre en place avec Git.
Quid de l’intégration continue ?
Avec la multiplication des branches, le serveur d’Intégration Continue risque rapidement la surcharge. Même si l’automatisation est reine; comme avec Bamboo qui permet le clonage automatique des plans de branches; elle n’est pas nécessairement obligatoire. Il est notamment envisageable de conserver un lancement manuel des plans de builds sur les feature branches. Là dessus, la dimension de vos équipes vis-à-vis du serveur de build dictera les choix pertinents.
Plus loin avec les hooks de Git
Les hooks, ou crochets, sont un ensemble de scripts lancés sur des évènements particuliers du cycle de Git et qui permettent de rajouter des actions intéressantes soit côté client, soit côté serveur. On peut notamment appliqué des formatages de code, de la validation de code ou de message de commits, envisager des fusion en cascade, etc. Les crochets sont des outils puissants qui permettent d’automatiser un peu plus encore les processus de développement
Rêve ou réalité ?
Ce qu’Atlassian applique est-il à la portée de n’importe quelle entreprise ? Chez Valiantys, cela fait maintenant 3 semaines que nous avons fait le grand saut vers Git sur l’ensemble de nos produits. Loin d’avoir le recul nécessaire pour analyser l’ensemble des avantages et inconvénients, nous pouvons d’ores et déjà mesurer des changements concrets que nous apporte Git par rapport à SVN.
Rapidité
Ce n’est pas un mythe. Git est plus rapide. Le clonage d’un dépôt s’effectue en quelques secondes alors que le checkout initial de SVN prenait plusieurs minutes. Et que dire des analyses d’historique. Étant donné que le dépôt local du développeur contient toutes les informations nécessaires, l’opération est quasi-instantanée. Peu importe la taille de l’historique en question.
Les Feature Branches
On en parle beaucoup, mais elles le méritent entièrement. Les features branches changent significativement la vie des développeurs.
Intégration de l’Usine Logicielle
Nous fonctionnions déjà avec Jira, Confluence et Bamboo. Le passage à Git nous a permis de rajouter Stash (accompagné de SourceTree) pour une intégration toujours plus poussée de nos outils de développement.
En conclusion
Atlassian est une entreprise qui marche, et plutôt bien même si l’on en juge l’évolution de sa base d’utilisateurs ces dernières années. Sa gestion des cycles de vie de ses nombreux produits est l’une des raisons de ce succès. Alors que de nombreuses sociétés peinent à livrer une version par an, chez Atlassian les nouvelles versions arrivent plusieurs fois par trimestres voir toutes les 3 semaines pour certains produits. Et Git est une brique essentielle dans cette réussite.