Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Utiliser GitFlow

Par Valentin BUSSEUIL Publié le 20/03/2017 à 17:49:25 Noter cet article:
(0 votes)
En attente de relecture par le comité de lecture

Avant de nous lancer corps et âme dans GitFlow, commençons par déterminer à quoi cette notion fait référence. Pour les adeptes de programmation, vous avez surement remarqué que l’intitulé de cet article comportait un terme qui vous est très familier. Oui, dans GitFlow nous avons « Git », ce tutoriel s’oriente essentiellement autour de ce gestionnaire de contrôle de code source tant répandu dans l’écosystème des développeurs.

Dans ce chapitre, nous examinerons dans les moindres détails ce qu’est GitFlow afin que nous puissions déterminer les réels avantages que cette solution peut procurer dans l’acheminement d’un projet de développement dans sa version finale.

Dans un premier temps, nous définirons GitFlow et ses dépendances puis nous passerons à son installation suivie de son initialisation. Pour la suite du tutoriel, nous élaborons de manière exhaustive les différentes composantes de cette solution.

Utilisation de Git

La première chose à faire avant d’attaquer GitFlow, c’est de s’assurer que nous avons bien assimilé le fonctionnement de Git dans sa globalité.

Git est un gestionnaire de contrôle de code source apportant une toute nouvelle philosophie dans la manière de gérer ses branches et ses commits. Au-delà de son utilisation brute, Git apporte plus de souplesse et de sécurité au niveau de l’intégrité du code source, au travers de son système de repositories et de son historique de commits. Git accuse une différence notable à l’égard des gestionnaires de contrôle de code source tel que Version Control de Microsoft ou encore Subversion, qui est la manipulation de repositories locaux et staging areas sur l’environnement du développeur. Cette mécanique est à appréhender dans la gestion des commits et l’écriture de l’historique pour une branche donnée.

Qu’est-ce que GitFlow ?

GitFlow est avant tout un flux de travail relativement simple à assimiler créer par Vincent Driessen en 2010. Il définit un modèle de gestion de branche orienté autour de la livraison de projet. Son but principal est de définir des branches auxquelles nous attribuons des rôles spécifiques. Dans la logique GitFlow, ces branches sont strictement définies comme suit : feature, develop, release, master, hotfix. Nous nous attarderons en détail plus tard sur leurs significations.

Les outils disponibles

Afin d’utiliser au mieux GitFlow, plusieurs outils dotés d’une interface graphique sont disponibles

  • SourceTree développé par Atlassian (petite préférence pour moi)

  • GitKraken développé par Axosoft

Pour les habitués de l’invite de commande, installer simplement l’extension GitFlow (https://github.com/nvie/gitflow/wiki/Installation)

Branches principales

Lorsque vous créer un projet, vous initialisez votre dépôt Git puis un commit trivial est réalisé sur une branche nommée master. Une branche develop est ensuite créé depuis ce commit. Commençons par définir les différents rôles attribués à ces deux branches.

La branche master est la branche définie pour représenter une version arrivée à maturité et prête à être mise en production. Il est important de préciser que chaque version est taguée.

La branche develop quant à elle, sera la banche d’intégration de toute nouvelle fonctionnalité. Elle représente les développements courants intrinsèquement liés à la prochaine version livrable.

Les commits sur ces deux branches se font par fusion uniquement depuis les branches tierces du projet. Nous pouvons éventuellement faire une exclusion à la règle en faisant des commits individuels ayant pour objectifs de corriger des facteurs exceptionnels.

Branches support

Tout à l’heure, je vous ai parlé de « branches tierces » qui pouvaient être fusionnées dans les deux branches principales. Ces branches sont en fait caractérisées comme étant des branches support.

Qu’entendons-nous par-là ? Eh bien ces branches, contrairement aux branches principales, auront une durée de vie limitée dans le temps. Leurs objectifs premiers seront d’alimenter les branches supérieures et seront ensuite détruites en cas de succès de fusion. GitFlow référence trois types de branches support : feature, release et hotfix.

Branches feature

Les branches de feature sont créées afin de développer de nouvelles fonctionnalités comme par exemple l’ajout d’un formulaire dans une page. Ces branches seront tirées à partir de la branche develop et fusionnées dans cette même branche à la fin de son développement.

GitFlow est avant tout un principe aidant à améliorer le flux de commits. C’est ici que nous pouvons définir des règles comme l’élaboration de requêtes de tirage pour permettre à l’équipe de participer à la revue de code et à sa validation par des processus de vérification comme le permettent SonarQube ou encore Jenkins.

Nous pouvons alors contraindre la fusion d’une branche de feature vers develop à valider tous les processus de revue de code/builds, c’est ici que ça devient intéressant.

En termes de bonnes pratiques, il est conseillé à chaque responsable d’une requête de tirage d’effectuer un git rebase de leur code sur la tête de develop afin d’éviter tout conflit de fusion.

Branches release

Les branches de release sont créées lorsque l’intégralité des développements d’une version est terminée. Cela signifie alors que le code source de la branche develop est prêt à être livré. Par conséquent, il en découle que toutes les branches de feature doivent être fusionnées dans la branche develop avant la création de la branche de release.

Ces fameuses branches de release ne sont pas là pour faire joli, elles ont pour objectif de stabiliser le code en éliminant les bugs et faire tout le travail de préparation de montée de version. Cette branche doit être isolée de toutes fusions avec de nouvelles fonctionnalités !

Une fois la branche arrivée à maturité, elle est fusionnée dans la branche master, le commit résultant de cette association est tagué avec le numéro de version issue du nom de la branche, exemple : release-1.0.0.

Une fois le processus accompli, la branche sera fusionnée dans develop puis détruite.

Branches hotfix

Les branches hotfix quant à elles, se créeront à partir de master et seront fusionnées à leurs termes dans develop et master. Ces branches ont exactement le même comportement que les branches release excepté la branche depuis laquelle elles sont créées.

Ces branches seront utilisées pour corriger un problème mineur sur une version en production. Exemple, faute d’orthographe dans un libellé.

Son nom contiendra « hotfix » suivis du numéro de version avec incrémentation du numéro de version équivalant au patch (correction mineure). Exemple : hotfix-1.0.1

Conclusion

Globalement, GitFlow accorde une véritable intégrité du code grâce à son principe du « moindre privilège ». D’une manière simple, nous pouvons organiser nos dépôts Git correctement avec un réel suivi clair et précis de l’historique tout en évitant les conflits entre chaque collaborateur. De plus, vous pourrez remarquer que cette solution peut s’adapter parfaitement avec la méthodologie Agile Scrum en assignant une user story par branche de fonctionnalité.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels