Git-Flow : workflow d’entreprise
Un système de gestion des branches
Travailler avec Git en équipe n’est pas quelque chose d’intuitif. Il faut se former et essayer plusieurs façons de travailler pour trouver celle qui convient le mieux. En effet, pour que l’utilisation d’un gestionnaire de versions soit efficace, il faut que les intervenants suivent les mêmes pratiques.
Par exemple, il n’est pas facile pour un développeur de savoir quand créer une branche, quand créer un tag, ou encore de savoir dans quelle branche doit être mergée la branche d’une nouvelle fonctionnalité.
Vincent Driessen a proposé un système efficace de gestion des branches sur son blog professionnel (http://nvie.com/posts/a-successful-git-branching-model). Ce système de gestion des branches peut être utilisé par des équipes de petite taille ou par des équipes importantes. Le but de ce système est de séparer efficacement les branches et les différentes versions du projet. Cette méthode de travail est largement répandue dans les projets utilisant Git, elle reçoit néanmoins quelques critiques de la part de certains développeurs : elle serait trop complexe et générerait de nombreux conflits inutiles.
Le 5 mars 2020, Vincent Driessen a publié sur son site un message appelant les utilisateurs de Git à ne pas sacraliser son système de gestion de branches. Selon lui, de nombreux développeurs respecteraient cette méthode à la lettre sans chercher à savoir si elle correspond aux besoins de leur projet.
Il rappelle que Git-Flow est conçu pour les projets qui ont besoin de maintenir plusieurs versions d’un logiciel en même temps ou qui fonctionnent avec des distributions logicielles majeures. La méthode GitHub Flow (expliquée dans l’annexe concernant GitHub) serait plus adaptée à un projet qui déploie en continu ses nouvelles fonctionnalités (comme le font beaucoup de projets web notamment).
1. Les branches éternelles
Les branches master et develop sont les branches qui ne seront jamais supprimées pendant toute la durée de vie du projet. Ce sont les seules branches à...
Exemple de workflow
Pour utiliser la méthode Git-Flow efficacement, il est préférable de nommer ses branches avec les termes anglais. De cette manière, tous les développeurs (français ou étrangers) seront capables de comprendre le schéma rapidement. De plus, utiliser les noms anglais favorise la compatibilité avec des outils s’interfaçant avec un dépôt en mode Git-Flow.
Avec la méthode Git-Flow, tous les merges doivent être effectués en désactivant l’avance rapide avec l’argument --no-ff de la commande git merge pour que chaque merge produise un commit. Cela permet d’avoir un historique plus clair et non pollué par les avances rapides.
Voici une vision schématique des branches composant un historique dans un dépôt géré par la méthode Git-Flow :

Le schéma précédent représente le dépôt utilisé dans le cas pratique présenté au chapitre Scénario d’équipe. Le dépôt contient un projet nommé improllow-up. Ce projet permet aux entreprises de suivre plus efficacement les tâches de leurs salariés.
Voici l’enchaînement des étapes du dépôt représentées par le schéma :
-
C1 (master) : premier commit du projet. Ce commit ajoute la base...