git - dudleydehenau/ScapeGame GitHub Wiki

Résumé coaching 4

+ Le groupe peut expliquer et justifier son choix de workflow git.
+ Le groupe peut montrer que tout est en place et que tous les membres du groupes utilisent déjà git pour le projet.

1. Explication et justification du git workflow utilisé

Dans notre projet, nous avons défini un workflow Git adapté à nos besoins spécifiques de développement et de déploiement. Ce workflow repose sur trois principales branches : main, dev et des branches auxiliaires pour la gestion des conflits de code. Voici une explication détaillée et la justification de ce choix.

Branch main

Description : La branche main est réservée aux versions du code destinées à être déployées en environnement de test ou de production. Cette branche est synonyme de stabilité et de maturité du code. Chaque commit sur main représente une version alpha qui a été rigoureusement testée et qui est prête à être déployée.

Justification :

  • Qualité et Stabilité : En limitant les commits sur main aux versions testées et prêtes pour le déploiement, nous garantissons que cette branche contient toujours du code fiable. Cela permet de minimiser les risques de bugs en production.
  • Déploiement Simplifié : La branche main sert de référence pour les déploiements, ce qui simplifie le processus de mise en production. Les versions peuvent être déployées en toute confiance, sachant qu'elles ont déjà passé les phases de test nécessaires.

Branch dev

Description : La branche dev contient la dernière version fonctionnelle du code, intégrant toutes les nouvelles fonctionnalités et modifications. C'est la branche principale de développement où le code est régulièrement fusionné après avoir été testé en isolation.

Justification :

  • Intégration Continue : En centralisant le développement sur dev, nous facilitons l'intégration continue des nouvelles fonctionnalités. Cela permet de détecter rapidement les incompatibilités et de s'assurer que le code est constamment à jour.
  • Préparation au Déploiement : dev est une étape intermédiaire entre le développement actif et le déploiement sur main. Cela permet d'effectuer des tests supplémentaires et de s'assurer que toutes les fonctionnalités fonctionnent bien ensemble avant de les promouvoir en version alpha sur main.

Branches Auxiliaires pour la Gestion des Conflits

Description : En cas de conflit de code ou de difficultés lors des pushs, nous créons des branches auxiliaires pour sauvegarder les modifications. Ces branches servent de points de restauration pour des changements spécifiques qui peuvent être fusionnés ultérieurement lorsque les conflits sont résolus.

Justification :

  • Préservation des Modifications : Ces branches permettent de sauvegarder les modifications sans bloquer le développement sur dev ou main. Elles offrent une flexibilité pour gérer les conflits de manière ordonnée.
  • Gestion Efficace des Conflits : En isolant les conflits dans des branches dédiées, nous évitons de perturber les branches principales. Cela permet de prendre le temps nécessaire pour résoudre les problèmes sans pression, tout en continuant le développement d'autres fonctionnalités.

Avantages de ce Workflow

  1. Séparation des Environnements de Développement et de Production : En distinguant clairement les branches main et dev, nous assurons que le code de production est toujours stable et que le développement peut progresser de manière indépendante.

  2. Flexibilité et Adaptabilité : Les branches auxiliaires offrent une flexibilité pour gérer les conflits et les modifications imprévues sans impacter le flux principal de développement.

  3. Amélioration de la Qualité du Code : En testant rigoureusement sur dev avant de fusionner sur main, nous réduisons les risques de bugs et améliorons la qualité globale du code.

  4. Processus de Déploiement Simplifié : Avec une branche main dédiée aux versions prêtes pour le déploiement, nous simplifions et accélérons le processus de mise en production, assurant ainsi des mises à jour fiables et régulières.

Ce workflow nous permet de maintenir une structure de code propre, de faciliter la collaboration entre les membres de l'équipe et de gérer efficacement les versions de notre projet.