TP : Intégration et Gestion de Versions chez "MathTech Solutions"
Contexte :
Vous rejoignez l'équipe de développement de MathTech Solutions. Votre responsable technique, Sarah, vous envoie vos tâches par courriel au fil de la journée.
Règles d'or de l'entreprise
- Langue : Tous les noms de branches (sauf
main) et tous les messages de commit doivent être en français. - Workflow : On ne touche jamais directement à
mainpour le code. Tout passe par une branche d'intégration nomméedev.
Prérequis :
Le dépôt a été créé pour vous via GitHub Classroom.
Vous devez avoir l'URL de votre dépôt sous la main.
Démarrage - La propreté avant tout
De : Sarah Connor (Tech Lead)
Objet : Démarrage - La propreté avant tout
Bienvenue ! Ton dépôt est prêt.
Avant même d'écrire une ligne de code C#, on doit s'assurer que le dépôt restera propre. On ne veut surtout pas versionner les fichiers temporaires de Visual Studio (bin,obj,.vs).
Tes tâches :
Solution
- Ouvre ton terminal (Git Bash ou PowerShell) et clone ton dépôt :
- Entre dans le dossier créé :
cd TP_MathTech_VotreNom(ou le nom exact du dossier). - Le .gitignore :
- Va sur Google, cherche "github gitignore visual studio".
- Prends le contenu du fichier officiel (souvent un lien "Raw").
- Crée un fichier nommé
.gitignoreà la racine du dossier (là où se trouve le dossier caché.git) et colle le contenu dedans.
- Fais le tout premier commit du projet (c'est une bonne pratique de commencer par ça) :
Création de l'architecture
De : Sarah Connor (Tech Lead)
Objet : Création de l'architecture
Parfait, le dépôt est sécurisé contre les fichiers inutiles. On peut créer la solution.
J'aimerais que tu crées une solution Visual Studio contenant une Bibliothèque de classes nomméeBibliotheque-git-<da>et un projet Console nomméConsole-git-<da>. Une fois que c'est fait, envoie-moi une capture d'écran de l'explorateur de solutions dans Visual Studio pour confirmer la structure, et la sortie degit statuspour vérifier quebin,objet.vsne sont pas suivis.
Tes tâches :
Solution
- Lance Visual Studio 2026.
- Crée une nouvelle solution dans ton dossier cloné :
- Nom de la Solution :
[NOM_SOLUTION] - Ajoute un projet Bibliothèque de classes nommé
Bibliotheque-git-<da>. - Ajoute un projet Console nommé
Console-git-<da>.
- Nom de la Solution :
- Dans la librairie, renomme
Class1.csenCalculatrice.cs(et mets la classepublic static). - Vérifie avec
git statusque les dossiersbinetobjn'apparaissent pas (grâce à ton travail précédent). - Valide la structure sur la branche principale :
- Création de la branche de développement :
À partir de maintenant,mainest sacré. Crée la branchedevet place-toi dessus :
Attention à tes fichiers personnels !
De : Sarah Connor (Tech Lead)
Objet : URGENT - J'ai fait une gaffe avec un fichier perso !
Oh là là, j'ai fait une grosse bêtise !
J'étais en train de prendre des notes rapidement dans un fichiernote_personnelle.txtet, sans faire attention, je l'ai ajouté à l'index de Git (git add .) !
Je ne veux absolument pas que ce fichier finisse sur le dépôt. Je sais qu'il faut l'enlever du staging, mais je ne me souviens plus de la commande exacte.Tu lui répondrais quoi ? Comment ferait-on pour retirer ce fichier de l'index sans le supprimer de mon ordinateur ?
Scénario à reproduire :
Après avoir lu le courriel de Sarah, voici comment tu pourrais l'aider :
Solution
- Crée un fichier texte nommé
note_personnelle.txtà la racine du projet. - Ajoute-le à l'index par erreur (oups !) :
- Vérifie le statut (il doit être vert, prêt à être commité) :
- Correction : Pour garder le fichier sur ton ordi et l'enlever de Git de l'index :
(Note: La commandegit rm --cached <fichier>désindexe le fichier et le supprime du suivi Git. Une alternative plus sécuritaire,git restore --staged <fichier>, désindexe le fichier sans le supprimer du suivi et sans toucher à votre copie locale, réduisant ainsi le risque d'effacement accidentel. Nous utiliserons icigit rm --cachedcomme demandé, mais gardez l'alternativegit restore --stageden tête.) - Pour éviter de refaire l'erreur, ajoute
note_personnelle.txtà la fin de ton fichier.gitignore. - Valide la mise à jour du gitignore sur la branche
dev:
Dev de l'addition
De : Sarah Connor (Tech Lead)
Objet : Dev de l'addition - Implémentation de la fonction d'addition
C'est parti pour développer une nouvelle fonctionnalité !
Une fois que tu as intégré cette méthode et fusionné ta branche de fonctionnalité dans
N'oublie pas que l'on part toujours de la branchedevpour créer une fonctionnalité. Pour cette tâche, tu créeras une branche nomméefonctionnalite/addition.
J'ai besoin que tu implémentes la méthode d'addition suivante dansCalculatrice.cs:
dev, envoie-moi la sortie degit log --graph --onelinepour que je voie l'historique des commits.
Tes tâches :
Solution
- Crée une branche nommée
fonctionnalite/addition(depuisdev). - Implémente la méthode
AdditionnerdansCalculatrice.csselon les spécifications de Sarah. - Valide ton travail :
- Intégration :
- Reviens sur la branche
dev(git checkout dev). - Fusionne ta fonctionnalité :
- Vérifie l'historique avec :
- Reviens sur la branche
Implémentation de ta méthode Diviser (simple)
De : Sarah Connor (Tech Lead)
Objet : Dev - Implémentation de ta méthode Diviser (simple)
Maintenant, c'est à ton tour !
Une fois que ta méthode est prête et que ta branche de fonctionnalité est fusionnée dans
Crée une nouvelle branche depuisdev, par exemplefonctionnalite/division-simple.
J'ai besoin que tu implémentes la méthodeDivisersuivante dansCalculatrice.cs:
dev, envoie-moi le code final deCalculatrice.cset la sortie degit log --graph --onelinepour que je valide ton travail.
Tes tâches :
Solution
- Assure-toi d'être sur la branche
dev(git checkout dev). - Crée une nouvelle branche pour ta fonctionnalité de division, par exemple
fonctionnalite/division-simple(git checkout -b fonctionnalite/division-simple). - Dans le fichier
Calculatrice.cs, ajoute ta version de la méthodeDiviser(une simple division sans gestion d'erreur) :
- Valide ton travail sur ta branche :
- Retourne sur la branche
dev(git checkout dev). - Fusionne ta branche
fonctionnalite/division-simpledansdev:
Amélioration de la méthode Diviser (avec gestion d'erreur)
De : Sarah Connor (Tech Lead)
Objet : Dev - Amélioration de la méthode Diviser
Excellent ! Maintenant que la version de base de
Diviserest en place, j'aimerais que tu l'améliores.
Crée une nouvelle branche depuisdev, par exemplefonctionnalite/division-gestion-erreur.
Dans cette branche, tu vas modifier la méthodeDiviserdansCalculatrice.cspour inclure une vérification de division par zéro, comme ceci :
Une fois que tu as implémenté cette version et que tu l'as fusionnée danspublic static double Diviser(int a, int b) { if (b == 0) throw new Exception("Division par zéro impossible"); return (double)a / b; }dev, envoie-moi le code final deCalculatrice.cset la sortie degit log --graph --onelinepour que je valide l'historique des commits et le code résultant.
Tes tâches :
Solution
- Assure-toi d'être sur la branche
dev(git checkout dev). - Crée une nouvelle branche pour cette amélioration, par exemple
fonctionnalite/division-gestion-erreur(git checkout -b fonctionnalite/division-gestion-erreur). - Dans le fichier
Calculatrice.cs, modifie la méthodeDiviserpour inclure la gestion d'erreur :
- Valide ton travail sur ta branche :
- Retourne sur la branche
dev(git checkout dev). - Tente de fusionner ta branche
fonctionnalite/division-gestion-erreurdansdev:
💥 Un conflit devrait être détecté ici, car tu as déjà une version deDivisersurdev! - Résolution du conflit :
- Ouvre
Calculatrice.csdans ton éditeur de texte. - Tu verras des marqueurs de conflit (
<<<<<<<,=======,>>>>>>>) indiquant les différences entre la version dedev(ta version simple) et ta nouvelle version (avec gestion d'erreur). - Modifie le fichier pour combiner les deux versions. L'objectif est de garder la nouvelle fonctionnalité de division avec la vérification de division par zéro. Le code final devrait ressembler à ceci :
- Attention : Assure-toi de supprimer tous les marqueurs de conflit !
- Ouvre
- Marque le conflit comme résolu et finalise la fusion :
Version 1.0
De : Sarah Connor (Tech Lead)
Objet : Version 1.0
Excellent travail !
Le développement est terminé. La branchedevest stable et testée.
C'est le moment de déployer !Une fois que
devest fusionnée dansmain, j'aimerais que tu places un tagv1.0sur le commit le plus récent demainpour marquer cette version.Après cela, envoie-moi la sortie complète de
git log --graph --oneline --allainsi quegit tagpour que je puisse valider l'historique final de toutes les branches et les tags.