Git Workflow
Workflow…?
- Une recette.
- Une recommandation de comment utiliser Git.
- Permettre aux utilisateurs exploiter Git efficacement.
- Pas une recette magique.
- A évoluer avec la culture de l’équipe.
Important!!!
- Ne jamais commiter directement sur la branche master ou develop.
- Ne jamais faire de rebase de master sur une autre branche.
- Ne pas sortir du workflow prévu.
Mix
Branche par fonctionnalité et
Gitflow
- Deux branches principales.
◦ Master
◦ Develop
- Chaque fonctionnalité est développée dans une branche.
- Une fois terminée, la branche est à nouveau mergée dans develop.
- Prêt pour livrer? Fusionner develop dans master.
Branches de fonctionnalités
- Une par fonctionnalité, plusieurs si facilite la relecture.
- Des petites modifications.
- Ne pas casser le build et fonctionnement sur develop.
- Nommage: « feature/ticketNumber » , « fix/ticketNumber »
- Ex: feature/DEV-2574_my_fonctionalite, fix/DEV-2502
- Ex plusieurs commits: feature/DEV-2574-1, feature/DEV-2574-2
Git Basics
- git clone: crée une copie de tout le projet en local.
- git checkout: permettre de créer (avec le flag B) et aussi de changer de branche.
- git status: affiche la liste de nouveau fichiers et des fichiers avec modifications
- git add: ajoute un fichier ou plusieurs dans le « staging area » , préparation de fichiers à commiter.
- git pull: récupère et intègre les changements du dépôt distante sur local.
- git rebase: recrée l’historique de commits pour avoir une cohérence.
- git push: pushe new-feature vers le dépôt centralisé
Pour l’équipe
1. Cloner dépôt centralisé
2. Créer une branche de fonctionnalité
3. Développer la fonctionnalité
4. Commiter
5. Mettre à jour avec develop / Rebaser
6. Gestion des conflits
7. Pusher vers le dépôt distant
8. Création Merge request / pull request
9. Revue de code
10. Résolvez du feedback
11. Deuxième relecture
12. Fussioner la merge request.
Rebase
- L'historique des commits doit être considéré comme sacré et immuable.
- Si les commits locaux d'un développeur diffèrent du dépôt centralisé, Git refusera
de faire un push des changements.
- Ne pas faire un pull de develop pour éviter des commits de Merge
- La solution, faire un rebase.
- « Je veux ajouter mes changements à tout ce qui été fait par les autres ».
- Résultat: un historique parfaitement linéaire.
Rebase
Gestion de conflits
- Des conflits si les changements local touches les mêmes lignes sur un fichier qui vient du dépôt distant.
- Git interrompt le rebase pour résoudre les conflits.
- Faire attention pour ne pas écraser des changements d’autre développeur.
- git add .
- git rebase –-continue
Création de merge request et
revue de code
- Une fois sur Gitlab, on crée une merge request pour obtenir de feedback.
- Ajouter des réviseurs, tag les développeurs.
- Revue de code
- Fonctionnalité
- Cas limites
- Tests
- Bonne pratiques: Google Java Style Guide, Google Javascript Style Guide
- L'équipe commentent et approuvent les commits pushés.
- Deux 👍 = On peut merger.
- Supprimer la branche
Releases
- Une fois toutes les branches sont approuvés et merger sur develop, code freeze.
- Test sur Integration/Preprod
- Merge la branche develop sur master
- Tagger la version.
- Pas de branche de release
Hot Fix
- Créer une branche à partir de master avec le nommage défini.
- Corriger le bug
- Merger sur develop et puis sur master.
- Tagger master.
Pour demain…
- Automatiser formatter: Spotless, Java Google formater, Spring-Java
- Automatiser livraison en PROD
- CI / CD
- Trunk base development.
Reference
◦ [Link]
◦ [Link]
◦ [Link]
◦ [Link]
◦ [Link]