GIT FLOW
Mai 2017
Plan
1. Interro surprise :-)
2. git-flow Kesako ?
3. Etude de cas
4. Workflow ?
5. Les commandes git-flow
6. Démo - exemple
7. Conclusion
8. Question
Interro surprise
A quoi sert git ?
Kesako
Git-Flow est un flux de travail qui peut
être utilisé pour effectuer des travaux de
développement continu.
Etude de cas
Un projet A est composé de 5 features
réparties comme suit :
● Version 1.0
○ Gestion des utilisateurs
○ Gestion des comptes
● Version 2.0
○ Gestion des tickets
○ Gestion des appels
● Version 3.0
○ Gestion multi pays
Etude de cas > Supposons que
● La version 1.0 est livrée au client & en
production
○ Le client peut à tout moment retourner des
bugs bloquants - urgents - sécurité sur la
version 1.0
● La version 2.0 est en développement
mais on développe la version 3.0 en
parallèle
Etude de cas > On devrait pouvoir
● Complexité 1 : On devrait pouvoir
corriger les bugs urgents & déployer
chez le client sans attendre la
prochaine livraison
● Complexité 2: Développer les deux
versions en parallèle - les déployer
sans pour autant entrer en conflit avec
les autres développements et/ou
corrections de bugs urgents
Workflow
● Fonctionnalités
○ Gestion des utilisateurs
○ Gestion des comptes
○ …
● Version - RC
○ Version 1.0 - Version 2.0 - Version 3.0
Workflow > Comment faire ?
Workflow > une solution
détails de l’image
Workflow > Branching
● Master
○ Branche de production
○ doit toujours être stable
○ protéger
● Develop
○ Branche de développement continue toujours
avec la dernière version du code (validé !!!)
○ Peut être utilisé pour CAQAO mais plus pour
test croisé interne
○ Connu pour être instable
Workflow > Branching
● Features
○ Créer des branches pour chaque feature
○ Merge la fonctionnalité au niveau de develop
quand on finit
○ Supprimer la branche
● Version / RC
○ Créer une/des branches pour chaque version
○ Merge la branche au master quand on finit
○ Peut être utilisé comme preprod / test UAT
pour le client
● Bugs urgents
○ Créer une branche pour chaque bugs urgents
○ Merge la branche sur master/develop/RC
○ Supprimer la branche
Workflow > Branching > git standard
Détail de l’image
Workflow > Branching > git standard
● Features :
○ git checkout -b features-users #from develop
○ coding
○ git commit -m ‘commit message’ #Commit
○ git checkout develop #switch to develop
○ git merge --no-ff features-users #Merge
features
○ git branch -d features-users #delete features
branches
Workflow > Branching > git standard
détails de l’image
Workflow > Branching > git standard
● Version / RC :
○ git checkout -b rc-2.0 develop
○ bug fixes correction on rc-2.0 & deploy on
develop
○ git checkout develop #switch to develop
○ git merge --no-ff rc-2.0 #merge bug fix
○ Tous les defects sont corrigés on livre le
RC-2.0
○ git checkout master #switch to master
○ git merge --no-ff rc-2.0 #merge rc-2.0 on
master
○ git tag rc-2.0 #tagguer la version 2.0
Workflow > Branching > git standard
Détails de l’image
Workflow > Branching > git standard
● Hotfix - Bug urgent:
○ git branch -b hotfix-1623 master #créer une
branche hotfix-1623 depuis master
○ Corriger le bug urgent
○ git checkout master #switch to master
○ git merge --no-ff hotfix-1623 #merge fix on
master
○ git checkout develop #switch to develop
○ git merge --no-ff hotfix-1623 #merge fix to
develop
○ git branch -d hotfix-1623 #supprimer la
branche de fix
Workflow > Branching > git flow
git flow nous permet de simplifier ce
processus et réduire le nombre de
commandes à exécuter pour déployer
notre travail
Workflow > git-flow > Installation
● Debian /ubuntu
○ apt-get install git-flow
● Fedora
○ dnf install gitflow
● Depuis le dépot officiel
○ wget -q -O - --no-check-certificate
https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/git
flow-installer.sh install stable | bash
Workflow > git-flow> initialisation
● init
○ git-flow init
Workflow > git-flow> feature
● feature
○ git-flow feature list
○ git-flow feature start <nom_feature>
○ git-flow feature finish <nom_feature>
Workflow > git-flow> Release
● Release
○ git-flow release list
○ git-flow release start <nom_release>
○ git-flow release finish <nom_release>
Workflow > git-flow> Release
● Hotfix
○ git-flow hotfix list
○ git-flow hotfix start <nom_release>
○ git-flow hotfix finish <nom_release>
Workflow > git-flow> Commande
Détails de l’image

Git flow

  • 1.
  • 2.
    Plan 1. Interro surprise:-) 2. git-flow Kesako ? 3. Etude de cas 4. Workflow ? 5. Les commandes git-flow 6. Démo - exemple 7. Conclusion 8. Question
  • 3.
  • 4.
    Kesako Git-Flow est unflux de travail qui peut être utilisé pour effectuer des travaux de développement continu.
  • 5.
    Etude de cas Unprojet A est composé de 5 features réparties comme suit : ● Version 1.0 ○ Gestion des utilisateurs ○ Gestion des comptes ● Version 2.0 ○ Gestion des tickets ○ Gestion des appels ● Version 3.0 ○ Gestion multi pays
  • 6.
    Etude de cas> Supposons que ● La version 1.0 est livrée au client & en production ○ Le client peut à tout moment retourner des bugs bloquants - urgents - sécurité sur la version 1.0 ● La version 2.0 est en développement mais on développe la version 3.0 en parallèle
  • 7.
    Etude de cas> On devrait pouvoir ● Complexité 1 : On devrait pouvoir corriger les bugs urgents & déployer chez le client sans attendre la prochaine livraison ● Complexité 2: Développer les deux versions en parallèle - les déployer sans pour autant entrer en conflit avec les autres développements et/ou corrections de bugs urgents
  • 8.
    Workflow ● Fonctionnalités ○ Gestiondes utilisateurs ○ Gestion des comptes ○ … ● Version - RC ○ Version 1.0 - Version 2.0 - Version 3.0
  • 9.
  • 10.
    Workflow > unesolution détails de l’image
  • 11.
    Workflow > Branching ●Master ○ Branche de production ○ doit toujours être stable ○ protéger ● Develop ○ Branche de développement continue toujours avec la dernière version du code (validé !!!) ○ Peut être utilisé pour CAQAO mais plus pour test croisé interne ○ Connu pour être instable
  • 12.
    Workflow > Branching ●Features ○ Créer des branches pour chaque feature ○ Merge la fonctionnalité au niveau de develop quand on finit ○ Supprimer la branche ● Version / RC ○ Créer une/des branches pour chaque version ○ Merge la branche au master quand on finit ○ Peut être utilisé comme preprod / test UAT pour le client ● Bugs urgents ○ Créer une branche pour chaque bugs urgents ○ Merge la branche sur master/develop/RC ○ Supprimer la branche
  • 13.
    Workflow > Branching> git standard Détail de l’image
  • 14.
    Workflow > Branching> git standard ● Features : ○ git checkout -b features-users #from develop ○ coding ○ git commit -m ‘commit message’ #Commit ○ git checkout develop #switch to develop ○ git merge --no-ff features-users #Merge features ○ git branch -d features-users #delete features branches
  • 15.
    Workflow > Branching> git standard détails de l’image
  • 16.
    Workflow > Branching> git standard ● Version / RC : ○ git checkout -b rc-2.0 develop ○ bug fixes correction on rc-2.0 & deploy on develop ○ git checkout develop #switch to develop ○ git merge --no-ff rc-2.0 #merge bug fix ○ Tous les defects sont corrigés on livre le RC-2.0 ○ git checkout master #switch to master ○ git merge --no-ff rc-2.0 #merge rc-2.0 on master ○ git tag rc-2.0 #tagguer la version 2.0
  • 17.
    Workflow > Branching> git standard Détails de l’image
  • 18.
    Workflow > Branching> git standard ● Hotfix - Bug urgent: ○ git branch -b hotfix-1623 master #créer une branche hotfix-1623 depuis master ○ Corriger le bug urgent ○ git checkout master #switch to master ○ git merge --no-ff hotfix-1623 #merge fix on master ○ git checkout develop #switch to develop ○ git merge --no-ff hotfix-1623 #merge fix to develop ○ git branch -d hotfix-1623 #supprimer la branche de fix
  • 19.
    Workflow > Branching> git flow git flow nous permet de simplifier ce processus et réduire le nombre de commandes à exécuter pour déployer notre travail
  • 20.
    Workflow > git-flow> Installation ● Debian /ubuntu ○ apt-get install git-flow ● Fedora ○ dnf install gitflow ● Depuis le dépot officiel ○ wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/git flow-installer.sh install stable | bash
  • 21.
    Workflow > git-flow>initialisation ● init ○ git-flow init
  • 22.
    Workflow > git-flow>feature ● feature ○ git-flow feature list ○ git-flow feature start <nom_feature> ○ git-flow feature finish <nom_feature>
  • 23.
    Workflow > git-flow>Release ● Release ○ git-flow release list ○ git-flow release start <nom_release> ○ git-flow release finish <nom_release>
  • 24.
    Workflow > git-flow>Release ● Hotfix ○ git-flow hotfix list ○ git-flow hotfix start <nom_release> ○ git-flow hotfix finish <nom_release>
  • 25.
    Workflow > git-flow>Commande Détails de l’image