TD03 : Travailler en équipe avec Git
Git est un logiciel libre de gestion de versions décentralisé et créé par Linus Torvalds, le créateur du noyau Linux. Une source d’information et de documentation sur Git est disponible en ligne :
Nous allons utiliser Git en ligne de commande avec la syntaxe git <cmd> [<args>]
.
Les principales sous-commandes <cmd>
que nous utiliserons seront : clone,
add, commit, status, log, diff, checkout, push, pull, ....
L’aide sur une sous-commande particulière et sur ses arguments est accessible
avec git help <cmd>
.
Nota Bene : Git va probablement vous paraître difficile (voire obscur), mais c'est aujourd'hui un standard de facto dans le monde du logiciel libre et bien au-delà dans le secteur du numérique ! Nous allons l'utiliser tout au long de cette année, donc adoptez-le dès maintenant et acceptez de perdre du temps pour apprendre à maîtriser cet outil important... Vous gagnerez beaucoup de temps par la suite ;-)
Exercice 1 : création d'un projet Git personnel
A l'aide d'un navigateur web, connectez-vous à la plateforme GitLab du CREMI, qui va vous permettre de créer des projets Git et de les administrer tout au long de vos études en Informatique à l'Université de Bordeaux.
Création d'un premier projet
Dans cet exercice, vous devez créer un nouveau projet Git du nom de votre choix,
par exemple test
, en choisissant private
comme visibilité du projet.
Attention, un projet public est visible de tous ! Choisissez d'initialiser votre
projet avec un fichier README
, c'est toujours une bonne idée.
A ce stade, vous pouvez administrer votre projet à partir de sa page principale,
accessible à l'URL : https://gitlab.emi.u-bordeaux.fr/<login>/<project>
. Dans
notre exemple, le <login>
est auesnard
et le <project>
est test
.
Afin de récupérer une copie locale de son projet Git sur sa machine (ou ses
machines), il va être nécessaire d'ajouter sa clé publique dans les Settings
de son compte GitLab, également accessible directement à l'URL
https://gitlab.emi.u-bordeaux.fr/-/profile/keys.
Ajouter une clé SSH
Si vous avez déjà généré votre clé publique, vous devez disposer d'un fichier
~/.ssh/id_rsa.pub
, dont il faut recopier le texte dans votre navigateur web.
Vous pouvez recommencer si vous disposez de plusieurs clés SSH. Si vous ne
disposez pas encore d'une clé publique, vous pouvez en créer une nouvelle sur
votre machine au CREMI et/ou à la maison avec la commande ssh-keygen
.
Pour plus d'info, merci de vous référer au Niveau 3 du Stage Environnement de Travail.
Obtenir une copie locale
L'étape suivante va consister à récupérer une copie locale de votre projet Git
en utilisant la commande en ligne git clone <repository>
. Pour trouvez
l'adresse de votre dépôt (ou repository en anglais), cliquez sur le bouton
Clone with SSH
(bouton bleu, en haut à droite).
Attention, il faut absolument effectuer le clone avec la méthode SSH, car la methode HTTPS n'est pas disponible au CREMI ! Puis tapez dans un terminal une commande similaire à celle-ci (mais en remplaçant le login) :
$ git clone git@gitlab.emi.u-bordeaux.fr:auesnard/test.git
Cloning into 'test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
En principe, si votre clé SSH est correctement installée, il n'est pas nécessaire de taper son mot de passe du CREMI, mais uniquement la passphrase qui protège votre clé privée SSH (si vous en avez une). Si vous en avez marre de taper toujours votre mot de passe, pensez à configurer un agent SSH.
Un répertoire test
est alors créé, qui contient le fichier README.md
(ajouté
à l'initialisation) et un sous-répertoire caché .git/
.
Configurer son nom d'auteur
Avant de commencer à travailler sur la copie locale de son projet Git, il est important de configurer correctement son identité sur sa machine, afin que l'auteur de chaque modification soit bien connue de Git. Dans un terminal, tapez les commandes suivantes en prenant soin d'indiquer correctement son prenom, son nom et son email académique.
$ git config --global user.name "Prénom Nom"
$ git config --global user.email "prenom.nom@etu.u-bordeaux.fr"
$ git config --global pull.rebase false
Vérifiez que tout est OK avec la commande :
$ git config --global -l
Attention : Cette configuration est particulièrement importante pour les évaluations automatiques que nous allons effectuer par la suite dans Moodle ! Chaque étudiant devra soumettre son travail personnel avec son nom d'auteur bien configuré, sinon sa contribution au travail d'équipe ne sera pas comptabilisé !
Nota Bene : Pour vérifier les informations sur son compte informatique au
CREMI, et notamment son adresse email
précise, il faut se connecter sur la
page mes infos de
l'Intranet.
Modifier un fichier
- Ouvrez un terminal et placez-vous dans le répertoire de votre projet.
- Puis éditez le fichier
README.md
en ajoutant un peu de texte. Si vous souhaitez utiliser VS Code, il convient de tapercode .
dans le répertoire de votre projet. - En vous aidant des ressources fournies sur Moodle, apprenez à faire un commit pour enregistrer en local cette nouvelle version. Chaque commit doit être accompagné d'un commentaire explicite (> 8 caractères).
- Puis, synchronisez cette version avec votre dépôt distant sur le serveur GitLab (pull & push).
- Pensez à utiliser systématiquement les commandes
git log
etgit status
pour afficher l'état courant de votre dépôt Git. - Vérifiez sur la page GitLab de votre projet que la modification a bien été prise en compte. Retrouvez le hash de votre commit, le commentaire associé et vérifiez que le nom d'auteur est correct.
- Ajoutez maintenant un nouveau fichier texte à votre projet.
Attention : Il ne convient d'ajouter dans Git que des fichiers texte comme du code source, mais jamais les fichiers générés, comme les fichiers objet intermédiaires ou les exécutables (au format binaire).
Rendu Moodle
- Vérifiez que l'utilisateur Moodle Manager à bien le rôle
Maintainer
.
Attention : La présence de l'utilisateur Moodle Manager dans votre projet est
nécessaire pour le bon fonctionnement de l'évaluation automatique VPL, de même
que le choix du rôle de Maintainer
!
- Rendez ce travail dans Moodle, en complétant le fichier
rendu.txt
au format suivant :
REPOSITORY: https://...
COMMIT: ...
Dans ce fichier, REPOSITORY
représente l'URL de votre projet GitLab (au format
HTTPS) et COMMIT
représente le hash de votre commit. Faire git log
pour
identifier le commit de votre choix, en général le dernier. Voici un exemple
de fichier rendu.txt
pour le projet
https://gitlab.emi.u-bordeaux.fr/auesnard/test
:
REPOSITORY: https://gitlab.emi.u-bordeaux.fr/auesnard/test
COMMIT: a66e700c92a42e0a484bda33b583027a9d0799a5
Merci de respecter strictement cette syntaxe !
Exercice 2 : Travaillons en équipe
Cet exercice est à réaliser avec son équipe.
- Commencez par finaliser votre choix d'équipe dans Moodle (3 étudiants max / groupe).
- Si vous n'avez pas encore d'équipe, discutez avec votre chargé de TD pour rejoindre une équipe.
Pour des raisons pratiques, nous avons déjà créé tous les projets de toutes les équipes dans le GitLab du CREMI : https://gitlab.emi.u-bordeaux.fr/pt2/teams/. Ainsi le projet de l'équipe B12 est accessible à une URL de la forme https://gitlab.emi.u-bordeaux.fr/pt2/teams/mosaic-b12.
Tous les enseignants sont déjà membres de votre projet (y compris Moodle Manager). Néanmoins, vous n'êtes pas encore membre de ce projet.
- Pour continuer, il faut qu'un étudiant leader de l'équipe (et un seul)
demande à son chargé de TD de l'ajouter comme membre du projet de son équipe
avec le rôle
maintainer
(rôle le plus élevé). - L'étudiant leader doit ensuite ajouter tous les étudiants membres de son
équipe. Pour ce faire, sélectionner le menu
Project Information > Members
dans votre projet, puis inviter les autres étudiants en tant queMaintainer
. (Attention : il faut que chaque étudiant se soit connecté au moins un fois à Gitlab pour disposer d'un compte actif. - Pour terminer, il faut que tous les membres de l'équipe fassent un commit dans le projet avec leur nom / email correctement configuré.
- Chaque étudiant effectue son rendu final sur Moodle, en choisissant le dernier commit, dont il est l'auteur.