Scénario 2 - Utiliser git pour un travail collaboratif#
Pour toute l’activité, vous aurez besoin de 2 développeurs.
Une personne joue le rôle de Alex et l’autre joue le rôle de Camille.
Vous utiliserez git dans le but de travailler de manière collaborative sur un projet.
L’objectif est de créer le site web d’un restaurant. Dans un premier temps, vous partez d’un gabarit de site web.
Attention : vous devez travailler sur un nouveau dossier sur votre ordinateur, en particulier pas dans un sous dossier dont le dossier parent est déjà suivi sur Git !!
Initialisation du dépot#
Résumé du scénario
Alex va télécharger les sources, initialiser le projet github, puis inviter Camille à collaborer. Camille va alors également initialiser son espace de travail.
Alex : télécharger le code source resto.zip, le décompresser dans un dossier
SiteResto.Alex : initialiser git dans le dossier
SiteResto.Alex :
commitl’intégralité des sources. Vérifier avec ungit statusavant et après si nécessaire.Alex : créer un dépot sur GitHub pour le
SiteResto.Alex : lier le dossier
SiteRestoavec le dépot github : utiliser la commande proposée à la création du projet git :git remote add origin ...Alex :
pushle contenu du dossier de travailSiteRestovers gitHubAlex : vérifier sur GitHub que les fichiers sont disponibles
Alex : sur GitHub, donner les droits à Camille sur le projet : Settings, Collaborators, Add people.
Camille : cloner le projet dans un espace sur sa machine.
Alex et Camille : visualiser chacun le site web, en ouvrant le fichier index.html dans un navigateur.
Développement collaboratif#
Résumé du scénario
Alex et Camille vont faire avancer chacun le site web, en travaillant de manière conjointe sur la branche principale. Les rôles sont répartis : Alex modifie le code CSS, Camille modifie le code HTML. En travaillant sur des fichiers distincts, la fusion devrait se faire sans ambiguïté à la fin.
Modifications indépendantes#
Alex |
Camille |
|---|---|
Dans le fichier |
Dans le fichier index.html, modifier quelques-uns des titres de classe |
Vérifier les modifications dans le navigateur |
Vérifier les modifications dans le navigateur |
|
|
Dans le fichier style.min.css, changer la couleur des secondary-headings (2 endroits) |
Dans le fichier index.html, modifier quelques-uns des titres de classe |
Vérifier les modifications dans le navigateur |
Vérifier les modifications dans le navigateur |
|
|
Alex :
pushses modifications.Camille :
pushses modifications. Quel est le problème rencontré ? Faire unpullavant de pousser à nouveau.Alex :
pullAlex et Camille : visualiser le même site web, avec les titres et les couleurs modifiés.
Alex et Camille : visualiser avec
git logl’historique des modifications.
Modifications d’un même fichier#
Résumé du scénario
Alex et Camille vont modifier de manière collaborative le même fichier index.html, à des endroits différents. Comment se passera la fusion ?
Alex |
Camille |
|---|---|
Dans le fichier index.html, traduire en français les titres du menu en haut à droite. |
Dans le fichier index.html, traduire en français les éléments du formulaire de contact en bas de page. |
Vérifier les modifications dans le navigateur |
Vérifier les modifications dans le navigateur |
|
|
Camille :
pushses modifications.Alex :
pushses modifications. Quel est le problème rencontré ? Faire unpull. Comment est géré le merge ? Pousser à nouveau.Camille :
pullAlex et Camille visualisent le même site web, avec le menu et le formulaire traduits.
Modification d’une même ligne de code#
Résumé du scénario
Alex et Camille ne se sont pas concertés. Ils modifient de manière concurrente le même fichier index.html, aux mêmes endroits. La fusion des fichiers va donc nécessiter une prise de décision.
Alex |
Camille |
|---|---|
Dans le fichier index.html, modifier les 3 paragraphes |
Dans le fichier index.html, supprimer les 3 paragraphes |
Vérifier les modifications dans le navigateur |
Vérifier les modifications dans le navigateur |
|
|
Alex :
pushses modifications.Camille :
pushses modifications. Quel est le problème rencontré ? Faire unpull.Camille : Résoudre le conflit,
commit, puis pousser à nouveau.Alex :
pullAlex et Camille : visualiser le choix retenu par Camille.
Visualisation de l’historique des contributions#
Depuis l’interface github, visualiser dans
Insightspuisnetworkle graphe représentant les différents commit et merge du projet.Facultatif : depuis depuis Visual Studio Code, vous pouvez installer le plugin
git historyqui donne une visualisation similaire (View History).
Mise en ligne avec github pages#
Résumé du scénario
Le chef est satisfait, Alex et Camille vont pouvoir mettre en ligne le site web final. Alex publie le site, après quoi Camille fera juste une petite retouche finale.
Alex : Dans l’interface github, aller dans Settings, Pages et choisir la branche master comme source pour publier votre site web.
Alex et Camille : visualiser le site web sur l’adresse en ligne. Nb : la mise à jour peut prendre quelques minutes. En attendant, il est possible d’aller voir l’onglet Action / Page Build sur gitHub pour voir l’état d’avancement.
Camille : modifier le code index.html pour changer le texte de la description commençant par « Voluptabilis » (vers la ligne 100).
Camille :
commitetpushles changements. Vérifier que la mise à jour est bien propagée sur la version en ligne du site web.
Travail sur une branche de développement#
Résumé du scénario
Le site web est maintenant livré et en ligne, donc plus question de tout casser. Pourtant le chef demande de revoir intégralement le site web. Alex et Camille vont donc le faire sur une branche de développement qui sera fusionnée une fois qu’elle sera stable.
Création d’une branche de dev#
Résumé du scénario
Camille commence les travaux de développement, tandis qu’Alex vérifie que rien ne bouge sur le site web publié.
Camille : créer une nouvelle branche dev : git branch dev
Camille : basculer sur la branche dev : git checkout dev
Camille : trouver sur le web une image de paysage permettant de remplacer l’image img_1.jpg
Camille : modifier le fichier index.html pour remplacer l’image img/img_1.jpg par celle choisie. Vérifier dans un navigateur que l’image apparait.
Camille : commit les changements en pensant bien à ajouter l’image.
Camille : push les modifications en créant une branche sur le site distant :
git push origin devAlex : vérifier que la version en ligne sur GitHub Pages n’est pas impacté.
Changement de branche#
Résumé du scénario
Alex est missionné pour continuer la branche de développement. Pendant ce temps, Camille va réaliser un correctif léger sur la branche principale.
A tout moment, un git status permet de vérifier la branche courante.
Alex |
Camille |
|---|---|
Récuperer les changements distants : |
|
Bascsuler sur la branche |
Basculer sur la branche |
Trouver sur le web une photo de pizza |
Dans index.html, modifier le |
Dans le fichier index.html, remplacer l’usage de img/img_square_1.jpg par la photo de pizza (3 occurrences). |
|
commit et push les changements en pensant bien à ajouter l’image. |
commit et push les changements |
Vérifier que les changements n’impactent pas le site web en ligne. |
Vérifier que les changements sont biens visibles sur le site web en ligne. |
Fusion de branche#
Résumé du scénario
On considère que la branche de développement est maintenant suffisamment aboutie. Il s’agit maintenant de mettre en ligne cette version finale. Camille va vérifier le travail d’Alex avant de fusionner le site web final.
Camille : se placer dans la branche dev et récupérer les modifications :
git pull origin dev. Vérifier que les deux images apparaissent bien.Camille : se placer dans la branche master.
git checkout masterCamille : fusionner la branche dev dans la branche master.
git merge devCamille : résoudre les éventuels conflits, commit si nécessaire et push.
Vérifier que le contenu visible sur GitPages est bien celui d’anciennement Dev.
Visualiser le graph des commit.
Travail de synthèse#
Résumé du scénario
Camille et Alex vont chacun travailler sur une fonctionnalité différente, et sur une branche différente. Leurs deux branches seront alors fusionnées dans la branche dev, puis dans la branche master.
Selon l’ordre de réalisation des actions, les conflits pourront être différents. Essayer à chaque étape de prédire les conflits qui risquent d’être rencontrés.
Alex |
Camille |
|---|---|
Choisir un aspect du site web à modifier |
Choisir un autre aspect du site web à modifier |
Créer une branche |
Créer une branche |
Implémenter les modifications choisies ci-dessus. |
Implémenter les modifications choisies ci-dessus. |
commit et push les changements |
commit et push les changements |
merge les changements avec la branche dev |
merge les changements avec la branche dev |
Vérifier que la branche de dev est toujours fonctionnelle |
Vérifier que la branche de dev est toujours fonctionnelle |
merge la branche dev avec la branche master |
merge la branche dev avec la branche master |
Vérifier que les changements sont biens visibles sur le site web en ligne. |
Vérifier que les changements sont biens visibles sur le site web en ligne. |