Git workflows
Tirer profit de Git au maximum
Rappel : système décentralisé
Rappel : rebase
rebase = réécriture d'historique
Rappel : rebase
autre exemple d'utilisation : mettre à jour une branche
Rappel : rebase
autre exemple d'utilisation : nettoyer l'historique
Workflow centralisé
- Chacun clone le repository de référence
- Une seule branche requise : master
- Tout le monde publie son travail sur master
- Fonctionnement proche de SVN
Workflow centralisé
Avantages
- Le plus abordable pour une équipe qui vient de SVN
- Intégration continue facile
- Merge / résolution de conflits faciles
Workflow centralisé
Limitations
- Pas pratique pour des grosses équipes
- Moins facile de faire des code reviews
- Une feature commencée doit être terminée pour la release (1)
- N'offre pas le choix d'intégrer ou non une feature (2)
(1) : augmenter la fréquence des release et segmenter les features aide à régler ce problème
(2) : les feature toggles peuvent aider à régler ce problème
Workflow feature branch
Avantages
- Séparation claire des features
- Apporte une grand flexibilité pour les équipes plus grandes
- Pratique pour les code reviews ou discuter sur le code
- Feature en cours lors d'une release : c'est facile !
- Historique de commit plus facile à lire de manière générale
Workflow feature branch
Limitations
- Intégration continue plus complexe à mettre en place (1)
- Refactorings transverses moins aisés
- Pas encore assez structuré pour des équipes vraiment larges
- Intégration des branches : facile avec Git, mais doit tout de même être faite
- Attention à l'effet tunnel des branches qui durent trop longtemps
(1) : Est-ce qu'on peut encore parler d'intégration continue ?
Workflow Gitflow
Avantages
- Les mêmes que ceux du feature branch workflow
- Extrêmement structuré
- Plus facile à utiliser pour des équipes larges
- Standard implémenté par certains outils (SourceTree)
- "Notre arbre de commit ressemble à une oeuvre d'art"
Workflow Gitflow
Limitations
- Les mêmes que ceux du feature branch workflow (sauf la restriction aux tailles d'équipe)
- Déroutant pour des équipes qui viennent de SVN
Workflow Fork (Github)
Avantages
- Encourage la collaboration de tous : pas de demande préalable
- Encourage la discussion sur les features / fix et les code reviews
- Idéal pour le monde de l'Open Source
Workflow Fork (Github)
Limitations
- Le rôle de l'intégrateur est primordial
- L'intégrateur est inactif = le projet meurt
- Un peu lourd à utiliser pour une équipe colocalisée
Git workflows
Tirer profit de Git au maximum