GIT FLOW

~$ whoami

Vincent Nicopolsky

@Plimsky

https://github.com/Plimsky

 

Pro : Web Developer @maltem

Perso : Game Developer

Perso++ : Love Zelda & Cats

Définition

  • Workflow de gestion de branches GIT
  • Se branche facilement sur les projets AGILE (méthode SCRUM)
  • Travail propre

5 types de branches

  • Master
  • Develop
  • Feature-*
  • Release-*
  • Hotfix-*

Master

Environnement de prod

Develop

Environnement de recette

Feature-*

Environnement de développement (local)

Release-*

Environnement de

pre-prod

Chaque branche de release peut éventuellement correspondre à un sprint

Hotfix-*

Correctif de prod

Cas d'usage

Projet

  • Version actuelle en Prod : v0.8 (sprint 8)
  • Besoin de livrer la version : v0.9 (sprint 9)

Problématique

  • Pas de branche Release sur le sprint 9
  • Pas de tags sur Master
  • Difficile à récupérer les commits sans Cherry Pick

GIT FLOW + SCRUM

Features

  • Représente une ou plusieurs US
  • Ne peut être unitaire indéfiniment
  • Peut être longue / transverse sur plusieurs sprints (rare)

Develop

  • Tests d'intégration (Jenkins)
  • Mise en recette

Master

  • Tests d'intégration Prod (Jenkins)
  • Mise en prod sur les futurs serveurs de prod

Release-*

  • Elle sert dans le cas où l'on veut mettre en pre-prod
  • Chaque branche release (exemple release/1.0) peut correspondre à un sprint, et il peut y en avoir plusieurs par sprint
  • Hotfix et Relelease : 2 types de branches "Mergeable" avec Master (chaque merge est lié à un tag)

Best practice

Commandes

# Initialiser Git Flow
git flow init -d

# Lister / commencer / finir une feature
git flow feature
git flow feature start <nom-feature> # us-12-list-users
git flow feature finish <nom-feature>


# Lister / commencer / finir une release
git flow release
git flow release start <version> # 0.1.0
git flow release finish <version>

# Lister / commencer / finir un hotfix
git flow hotfix
git flow hotfix start <nom-hotfix> # assets
git flow hotfix finish <nom-hotfix>

MAJ feature

  • fetch
  • rebase sur develop
  • gérer les conflits en local
  • si tout est bon, push
  • merge sur develop

Avant la fermeture et le merge sur develop

Sources

Made with Slides.com