TP2 - Manipuler les branches
L'objectif de ce TP est de continuer à prendre en main Git et manipuler le concept de branches et de conflits.
Partie 0 - Instructions
Sources à utiliser
Si vous ne trouvez pas, vous pouvez demander :
- À votre voisine ou voisin.
- À votre prof.
- À un moteur de recherche (DuckDuckGo par exemple).
- À StackOverflow.
Mais vous ne pouvez PAS utiliser un LLM (ChatGPT, DeepSeek, Gemini, Grok, etc). Sous aucun prétexte. Levez la main plutôt, et on viendra le plus vite possible.
Si on vous interdit d'utiliser ces outils dans ce cours, ce n'est pas parce qu'ils détruisent la planète, concentrent les pouvoirs dans les mains des Big Tech, mettent en danger les démocraties, etc.
C'est parce que ces outils vous empêchent d'apprendre correctement tout en vous donnant l'impression (rarement juste) de gagner du temps.
Si on voit un·e élève utiliser un LLM pendant un de nos TP, c'est -1 sur sa note finale. Non négociable. Mais cumulable.
Comment réaliser le TP
- Suivre les instructions
- Utilisez des messages de commit clairs et concis.
- Répondre aux questions dans un fichier appelé
TP2.txtà rendre.- Lorsqu'il faut taper une commande pour obtenir la réponse, indiquez bien la commande.
Partie 1 - Multitasking et micromanagement
Vous travaillez dans une entreprise toxique et votre manager vous donne plusieurs tâches en même temps et change la priorité de ces tâches sans vous consulter. Vous devez donc avoir toujours une version propre du produit sur une branche
main, mais travailler sur différentes tâches sur des branches de travail.Il s'agit ici d'un TP d'1h30 donc on a exagéré sur ce qu'il est possible de demander en terme de changement de tâches et de priorité, mais dans la vraie vie, à l'échelle de plusieurs jours/semaines, il est fréquent de devoir mettre une tâche en pause pour travailler sur une autre.
Début du projet
Avant de commencer, puisque la configuration par défaut de
gitsur les ordis de l'IUT est un peu datée, on va commencer par lancer la commande suivante :git config --global init.defaultBranch mainElle change le nom de la branche par défaut pour les nouveau dépôt pour l'appeler
main. Jusqu'à y il a quelques années, par défaut c'étaitmaster, maintenant on utilise plutôtmain.
Vous travaillez sur un projet de site web pour un café. Plutôt que de discuter avec les gestionnaires du café pour définir les besoins clients en amont et planifier le projet, votre manager décide de vous lancer sur une V1 composée d'une simple page de présentation.
-
Créez un dosier TP2, dans ce dossier créez un dossier
site_webet initialisez-y un dépôt git. -
C'est pas un cours de web donc on vous donne une première base, téléchargez la page d'exemple et mettez là dans le dossier
site_web. Renommez laindex.html. Vous pouvez l'ouvrir dans votre navigateur en tapantfirefox index.html. -
Validez les modifications actuelles dans un premier commit.
-
Changez le nom du café par « Akaru », et effectuez un second commit.
-
Votre manager vous rappelle qu'avoir le CSS dans le HTML, c'est une mauvaise pratique. Déplacez le CSS dans un fichier CSS à part, et liez le au fichier HTML. Effectuez votre troisième commit.
📞🔊📞🔊 Le café vient d'appeler, il faudrait rajouter une page « À propos » qui parle de l'esprit du café, sa création etc.
Ça reste assez flou, on ne va pas créer cette page sur la version propre du projet, mais le faire pour l'instant dans une branche.
-
Déplacez-vous sur une nouvelle branche appellée « contenu ». C'est sur celle-ci que nous travaillerons sur le contenu du site.
-
Créez un fichier
apropos.html, recopiez la structure générale de l'index mais sans le contenu. Mettez un lien vers cette page dans l'index. Valider dans un commit. -
À l'aide de
git log --all --graph, vérifiez que votre commit est bien sur la branchecontenu, et au dessus de la branchemain.
📞🔊📞🔊 Votre manager arrive en courant, les couleurs sont moches, il faut vite changer ça ! Le titre devrait être en #fc2a9e
- Sur quelle branche allons-nous effectuer ces modifications ?
Réponse
Certainement pas sur la branche contenu, on veut pouvoir montrer une version propre avec les nouvelles couleurs. On pourrait (et devrait) le faire sur une branche à part, mais c'est sur une modification rapide, on est en rush, on va le faire sur main.
-
Déplacez-vous sur la bonne branche.
-
Modifiez le CSS pour que le titre soit bien en #fc2a9e.
-
Validez votre modification.
On a maintenant une version principale avec le bon CSS. On veut retourner travailler sur le contenu, mais il faut d'abord récupérer les modifications effectuées sur
maindans la branchecontenu.
- Comment récupérer les modifications de
maindans la branchecontenu? Lisez la réponse avant de lancer la commande : l'historique est immuable, si vous vous trompez ça risque de mettre le dépôt dans un mauvais état.
Réponse
On se déplace sur la branche contenu, puis on fusionner (merge) la branche main dedans :
git switch contenu
git merge main
- On a reçu le texte de présentation à mettre dans la page À Propos. Mettez le dans la page.
Akaru café est un café qui sert des cafés, du thés et des chocolats chauds.
Nous portons une attention particulière à la provenance de nos produits, en essayant de nous fournir directement auprès des producteur·ices et en faisant le moins possible appel à de l'esclavagisme.
- Notre page À Propos commence à avoir du contenu, on peut la rajouter à la version principale à montrer aux client·es, sur la branche
main. Fusionnez de façon à récupérer les modifications decontenudansmain.
Ce site est très moche. La personne qui a rédigé ce sujet n'aime pas faire de web, donc le site restera moche, mais on va quand même faire semblant de le rendre un peu moins moche.
-
Pour tout ce qui est de rendre le site plus joli, on va travailler sur une nouvelle branche
ux(pour User Experience). Déplacez-vous sur cette nouvelle branche. -
Modifiez le CSS de façon à avoir 2 cadratins (
em) de rayon sur les bordures du header, et centrer le titre à l'intérieur. -
Validez ces modifications.
-
Mettez le fond du header en #2afc88. Les liens du nav deviennent illisibles, mettez les en #333333.
-
Validez les modifications.
-
Modifiez le style du footer pour que le fond soit de couleur
tealavec un rayon de bordure de 1 cadratin, un padding de 2 cadratins, et le texte en#111111. NE VALIDEZ PAS CES MODIFICATIONS POUR L'INSTANT.
📞🔊📞🔊 Il y a une typo sur la page À Propos ! Il faut remplacer « du thés » par « des thés » !
-
Sur quelle branche faire cette modification ?
-
Notre travail actuel sur le CSS n'est pas assez propre pour faire un commit, mais votre manager vous met la pression pour vite corriger la typo. Mettez votre travail courant de côté à l'aide de
git stash, puis allez effecuter la modification sur la bonne branche.
git stashprend l'ensemble des modifications courantes du Working Directory et les dépose dans une pile, appeléestash. Pour re-appliquer ces modifications on les sort de la stash avecgit stash pop.
-
Retournez sur la branche
ux, et sortez les modifications en attente de la stash. Récupérez les modifications effectuées surmain. -
Le contenu est trop proche du header et du footer. Rajoutez un padding de 3 cadratins sur le bloc
main. Validez les modifications.
📞🔊📞🔊 Le café vient d'appeler, il faut rajouter en urgence une nouvelle page, « Nos produits », pour présenter le menu.
- Vérifiez que votre branche
contenuest à jour avec l'état de la branchemain. Sur la branchecontenu, ajoutez la pageproduits.htmlqui contient les informations suivantes dans le formalisme :
<ul>
<li class="cat_produit">CATÉGORIE PRODUIT 1
<ul>
<li class="produit">Produit1</li>
<li class="produit">Produit2</li>
</ul>
</li>
<li class="cat_prduit">CATÉGORIE PRODUIT 2
<ul>
<li class="produit">Produit2</li>
</ul>
</li>
</ul>
Cafés :
Espresso: 2,50€
Double Espresso: 3,50€
Filtre: 3,50€
Latte: 4,50€
Capuccino: 4,50€
Boissons chaudes:
Chai: 4,50€
Thé: 4,50€
Chocolat chaud: 4,50€
-
Validez les modifications
-
Votre manager vous dit que c'est vraiment urgent d'avoir les prix bien affichés, faites le CSS associé sur la même branche :
.cat_produit {
font-weight: bold;
padding: .5em;
}
.produit {
color: #191970;
}
- Validez les modifications et fusionnez de façon à ce que la branche
maincontienne cette pageproduits.html.
📞🔊📞🔊 VITE ! Le café a encore appelé, le manager vous met la pression !
Le header est moche comme ça, il faut vite le changer pour que le titre soit en #dc143c et le fond en #008b8b.
-
C'est urgent, pas le temps d'attendre que vous ayez fini votre travail de mise en page sur la branche
ux, faite vite ces modifications sur la branchemain. -
On repart sur le CSS, retournez sur la branche
ux. Changez la couleur de mise en valeur (activeethover) des liens dunavpour les mettre en #dc143c. -
On estime que la partie UX est terminée pour l'instant. On y reviendra peut-être après, mais l'ensemble des modifications effectuées pour l'instant est cohérent et on peut les intégrer à la version de démo sur le branche main. Fusionnez votre branche
uxdans la branchemain. -
Insérer la sortie de
git log --graph --all --onelinedans le fichier de rendu.
Partie 2 - Adora, Bow et Catra ont toujours du mal avec git
Nos trois camarades satisfait·es de l'aide que vous leur avait fourni la semaine dernière, font encore appel à vous : Leur nouveau projet est un état incompréhensible, il y a des conflits de partout !
-
Clonez leur dépôt disponible à l'adresse suivante : https://codeberg.org/ruro-iut/rapport_r2_17
-
Ouvrez le fichier Rapport.md. Que remarquez-vous d'étrange ?
-
Identifiez le premier commit qui a laissé des traces de fusion.
-
Combien de fusions ont résulté en un état étrange ?
-
Réparez le fichier en choisissant les bonnes versions à chaque fois. Validez chacune des résolutions de conflit dans commit différent.
-
Listez les branches autre que
main. Sont-elles en avance surmain? -
On va essayer de tout fusionner. Réfléchissez à l'ordre le plus pertinent pour effectuer ces fusions.
-
Fusionnez toutes les branches pas encore fusionnées de façon à obtenir un fichier propre contenant toutes les modifications.
-
Supprimez les anciennes branches.
-
Insérez le
git log --graph --allansi que le fichier Rapport.md dans le fichier de rendu.
Partie 3 - Bonus
-
Quel est le temps de gestation du rat-taupe nu ?
-
Combien d'enfants une reine peut-être avoir par an ?
-
La maman rat-taupe nue élève-t-elle ses enfants toute seule ?