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.

gitlab new project

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.

gitlab main page

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.

gitlab add key

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 taper code . 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 et git 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 !

gitlab invite

  • 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 que Maintainer. (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.