Aller au contenu

Semaine 5b : JOUR 2 - GIT, GITFLOW & TRAVAIL COLLABORATIF AVEC GITLAB

Formation Java / Spring Boot – Travail en équipe & industrialisation


Objectifs

À l’issue de cette journée, vous serez capable de :

Aujourd’hui, on passe du développeur.euse individuel.le, au développeur.euse en équipe.


Découverte de Git

Collaborez et gérez (versionning) avec Git et GitHub/GitLab

Il existe de nombreux tutoriaux sur le net qui permettent d’approfondir l’utilisation de ces outils que nous utilisons quotidiennement en tant que développeur.euse.

PARTIE 1 – COMPRENDRE GIT EN PROFONDEUR

Git n’est pas un outil de sauvegarde

Git est :

Git ne stocke pas des fichiers, Git stocke des snapshots de projet, des instantanés du code.


Les 3 zones de Git (fondamental)

Working Directory → Staging Area → Repository

3) Commandes essentielles

git add .

On prépare le snapshot.

git commit -m "fonctionnalité : ajout du service de virement"

On enregistre un état cohérent.

git log --oneline --graph

4) Un bon commit doit être

Mauvais commit :

fix

Bon commit :

fix: correction validation montant négatif dans VirementService

PARTIE 2 – GITFLOW : STRATÉGIE PROFESSIONNELLE


5) Pourquoi GitFlow ?

Sans stratégie :

GitFlow structure le travail.


6) Structure GitFlow classique

Branches principales :

Branches secondaires :


7) Cycle de développement d’une feature

  1. Se placer sur develop
  2. Créer une branche feature
  3. Développer
  4. Commit
  5. Push
  6. Merge Request
  7. Revue
  8. Merge dans develop

8) Exemple

Créer une branche feature

On doit développer une fonctionnalité de batch de virement.

git checkout develop
git checkout -b feature/virement-batch

Après développement

Une fois la fonctionnalité développée, on la pousse (push) vers notre feature GitHub ou GitLab.

git push origin feature/virement-batch

PARTIE 3 – GITLAB & MERGE REQUESTS


9) Rôle de GitLab

GitLab permet :


10) Merge Request (MR)

Une MR permet :


11) Règle d’or

On ne merge jamais directement sur un main.

Toujours :


PARTIE 4 – REVUE DE CODE


12) Pourquoi faire des revues ?


13) Checklist de revue

Les linter de code vous permettent de vérifier les éléments ci-dessous :


14) TP – Simulation de revue

Étape 1

Un.e dev crée une feature.

Étape 2

Un.e autre dev relit le code.

Étape 3

Commentaires sur :

Étape 4

Correction + nouveau commit


PARTIE 5 – CONFLITS & RÉSOLUTION


15) Pourquoi les conflits arrivent ?


16) Exemple de conflit

<<<<<<< HEAD
code version A
=======
code version B
>>>>>>> feature/x

Résolution :


17) TP – Conflit contrôlé

  1. Deux branches modifient la même méthode.
  2. Merge conflict.
  3. Résolution en groupe.
  4. Vérification via tests.

PARTIE 6 – BONNES PRATIQUES


18) Convention de nommage des branches

Voir la documentation sur Confluence.


19) Convention de message de commit (Conventional Commits)

Exemple :

refactor: application SRP sur OperationDispatcher

20) Protection des branches

Dans GitLab :


PARTIE 7 – TRAVAUX PRATIQUES


TP 1 – Mise en place GitFlow complet


TP 2 – Revue de code


TP 3 – Résolution de conflit


21) Erreurs fréquentes

  1. Commit trop gros
  2. Pas de message clair
  3. Merge direct sur main
  4. Branche feature trop longue
  5. Ne pas mettre à jour develop
  6. Ignorer les conflits
  7. Refuser les revues
  8. Mélanger refactor et feature
  9. Supprimer historique
  10. Ne pas relancer les tests

Synthèse

Vous savez désormais :


Reste à voir

On entre dans la dimension distribuée.