Ceci est une ancienne révision du document !
Gitflow
WIP
GitFLow est une organisation assez répandue des dépôts Git qui permet de cloisonner les choses proprement et donc de collaborer à un grand nombre de personnes.
Des outils dédiés pour Git ont été créés pour permettre une plus grande facilité de travail dans les merges, commit et passage entre les différentes branches.
Présentation
GitFlow se base sur une hiérarchie de branches bien claire, qui permet d'éviter les commits intempestifs sur les branches principales. L'idée est de rendre bien clair l'ajout de fonctionnalités, et de maintenir des états stables sur les branches principales.
Il existe en général plusieurs branches de base dans un projet géré selon le modèle GitFlow :
- la branche Master, qui la version de production ;
- la branche Develop, qui est la version instable, mais dans un sens Debian-like : ce n'est pas le bazar, c'est juste qu'elle peut parfois avoir un fonctionnement imprévu, que des bugs peuvent y apparaître ;
- des branches Feature, qui concernent chacune l'ajout d'une fonctionnalité complexe (cela peut-être lié à une Issue précise, voire un ensemble). Une fois le travail achevé, on merge sur Develop(et cela ferme automatiquement les Issue si on commite correctement)
- une branche Release, qui est un fork de la version Develop lorsqu'on la pense mûre pour une nouvelle version de production. On y commite uniquement des corrections de bugs. Une fois ceux-ci achevés, on merge sur la branche principale, Master ;
- des branches Hotfix qui concernent la branche Master, quand un bug y a été détecté et qu'il faut impérativement y remédier rapidement. Une fois la solution trouvée, on merge la branche HotFix sur la branche Master (et on inclue le correctif dans la branche Develop.
En image, cela donne :
Présentation en vidéo
Grafikart propose une vidéo de présentation de GitFlow, comme toujours d'excellente qualité.
Le workflow type de travail
Il s'agit d'une description idéale, le travail sur chacun des dépôts peut s'avérer légèrement différent dans le détail même si les principes et commandes demeurent identiques.
N'hésitez pas à consulter le portail dédié aux sources pour savoir comment opérer sur chacun des dépôts de Khaganat : Contribuer : les dépôts du projet Khaganat
Mise en place d'un dépôt
Création d'une feature
Publication d'une feature
Merge d'une feature dans Develop
Création d'une release
Finaliser une release
Créer un HotFix
Sites ressource
- L'article originel de présentation par le créateur : http://nvie.com/posts/a-successful-git-branching-model/
- Une présentation en français : http://www.synbioz.com/blog/git-adopter-un-modele-de-versionnement-efficace
- En image (et en français), les commandes des différentes étapes : https://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html#features