Travail en binôme#
Du fait de la taille et de la complexité des systèmes informatiques, le développement logiciel est devenu une activité hautement sociale où le travail en équipe est central. Les projets informatique de cette année (S1: Programmation Impérative, S2: Programmation Modulaire, Initiation à la Science des données) sont l'occasion de s'initier au travail en équipe -- pour le moment, en binôme -- et aux outils et bonnes pratique du travail collaboratif sur du logiciel.
Dans ce document, nous vous donnons quelques pistes sur comment vous organiser.
Deux outils essentiels sont la gestion de version (avec des outils comme par exemple Git) et les forges logicielles (par exemple GitLab). Pour préparer le terrain, nous vous avons fait utiliser ces outils implicitement depuis le début de l'année pour télécharger et déposer vos devoirs. Les modalités proposées ci-dessous sont conçues comme des marches intermédiaires simples à mettre en œuvre. Si vous avez déjà un peu d'expérience, nous vous encourageons à aller plus loin et mettre en œuvre les modalités standard de développement collaboratif pour exploiter ces outils à leur plein potentiel, notamment en terme de fusion de modifications.
Comment partager du code avec GitLab#
Git, GitLab, travo
Git est un logiciel de gestion de versions décentralisé. Créé par Linus Torvalds (l’auteur du noyau Linux), c’est actuellement le logiciel de gestion de versions le plus populaire.
GitLab est une forge logicielle, offrant l'hébergement de dépôt git, et plus largement la gestion de projet logiciel.
travo est le petit outil basé sur
Git et GitLab que vous avez utilisé pour télécharger et déposer vos
devoirs (via le tableau de bord, ou course.py).
Quand vous déposez votre travail avec travo, les données sont
stockées sous la forme d'un dépôt Git, sur le service GitLab par
l’université. Le dépôt
est alors accessible à une adresse de la forme :
https://gitlab.dsi.universite-paris-saclay.fr/<prenom>.<nom>-travo/<UE>/<Session>/<Devoir>
Par exemple :
https://gitlab.dsi.universite-paris-saclay.fr/nicolas.thiery-travo/Info111/2025-2026/Semaine7
Pour retrouver cette adresse :
depuis le tableau de bord : suivez le lien vers le dépôt
depuis la ligne de commande : elle est affichée au moment où vous déposez
depuis le service GitLab : le dépôt apparaîtra dans la liste de vos projets.
Vous pouvez à tout moment y consulter l’état de ce que vous avez déposé. Vous pouvez aussi y consulter et télécharger les fichiers à la main.
Donner accès à votre devoir à votre binôme#
Par défaut, lorsque vous déposez un devoir, il n’est accessible qu’à vous et à l’équipe enseignante. Pour donner les droits à votre binôme, commencez par (re)déposer votre devoir pour vous assurer que votre dépôt est bien créé et est à jour. Ensuite, vous pouvez utiliser l'une des trois méthodes ci-dessous :
Dans le menu «Autres actions» du projet, choisir «Partager avec
(travail en équipe)», puis saisissez l'identifiant prenom.nom de
votre binôme.
cd <répertoire du cours>
./course.py share_with <Devoir> <prenom.nom>
Attention
Dans les commandes ci-dessus, veillez à remplacer <répertoire du cours>, <Devoir> et <prenom.nom> par les valeurs adéquates. Par
exemple ~/ProgImperative, Projet-Image et gael.durand.
Connectez vous sur votre dépôt via un navigateur web.
Cliquez dans «Project information» (en haut à gauche), puis dans «Members».
Cliquez sur «Invite members» (en haut à droite).
Dans le champ «GitLab member or email address», tapez le début du nom de votre binôme puis sélectionnez le dans la liste qui apparaît alors.
Dans le champ «Select a role», choisissez «Reporter».
Cliquez sur le bouton «Invite».
Votre binôme a maintenant accès en lecture à votre devoir.
Indiquer à GitLab que vous travaillez en binôme#
Soient A et B les deux membres du binôme. Entre les dépôts de A et de B, choisissez celui qui sera le «dépôt principal» : c'est celui qui fera foi pour représenter le travail du binôme. À charge pour vous de vous assurer que, à la fin du projet, il contienne tout votre travail.
Supposons que le dépôt principal choisi soit celui de B. Alors A doit le déclarer à GitLab (et donc aux enseignants) de la façon suivante :
Dans le menu «Autres actions» du projet, choisissez "Définir le dépôt
principal», puis saisissez l'identifiant prenomB.nomB de votre
binôme B.
cd <Le répertoire du cours>
./course.py submit <Devoir> --leader_name <prenomB.nomB>
Techniquement parlant, cette action revient à définir le dépôt de A comme une bifurcation (fork) du dépôt de B. Cela suit l'un des scénarios classiques facilitant la collaboration entre deux dépôts.
Depuis l'interface de GitLab, il n'est pas possible de définir a posteriori une telle relation de bifurcation. Mais A peut détruire son dépôt et le reconstruire comme bifurcation de celui de B, en prenant attention à créer un dépôt privé; à y donner accès à B, ainsi qu'aux enseignants, etc.
Cela fait, vérifiez le résultat pour tous les membres : relancez le
tableau de bord; les identifiants prenom.nom de A et de B doivent
apparaître pour le devoir, avec des liens vers leurs dépôts
respectifs.
Danger
Par la suite, lorsque A déposera son devoir, il ne devra pas sélectionner de groupe. Sinon l'information du binôme sera perdue.
Télécharger les fichiers de votre binôme depuis GitLab à la main#
Ouvrez le dépôt sur GitLab via un navigateur web.
Par exemple via votre tableau de bord.Cliquez sur le nom du fichier que vous voulez récupérer, puis cliquez sur la flèche en haut à droite (
Download).Pour télécharger tous les fichiers d'un coup, cliquez sur la flèche (
Download) en haut à droite de la liste des fichiers et choisissez le format d'archive qui vous convient (typiquementzip).
\(\clubsuit\) Télécharger les fichiers de votre binôme depuis GitLab avec Git#
Cela se fait en deux temps :
La première fois: faites un clone du dépôt de votre binôme :
git clone <url> <répertoire>
où
<url>est l'adresse du dépôt de votre binôme, et<répertoire>est le nom du répertoire où sera mis le code; typiquementProjetBinome.Vous avez maintenant un répertoire
ProjetBinomequi contient le code de votre binôme. Vous pouvez choisir n'importe quel autre nom pour ce répertoire.Chaque fois que vous voudrez récupérer la dernière version que votre binôme aura déposé : Allez dans le répertoire du projet de votre binôme :
cd ProjetBinôme
puis faites :
git pull
Vous devriez avoir un message ressemblant à
remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From https://gitlab.dsi.universite-paris-saclay.fr/... 4f4af71..64c35d5 master -> origin/master Updating 4f4af71..64c35d5 Fast-forward bla.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
les deux dernières lignes indiquent que dans le fichier bla.cpp une ligne à été supprimée et une ligne à été ajoutée.
Danger
Vous pouvez copier les fichiers de votre binôme, mais ne les modifiez pas !!! Vous risquez d’avoir des conflits. Si vous l’avez fait par erreur, vous pouvez supprimer le répertoire et refaire le clone selon l’étape 1 ci-dessus.
Conseils#
Communiquez régulièrement entre vous pour éviter de modifier le même fichier simultanément.
Dès que vous avez écrit une fonctionnalité qui marche, déposez votre projet pour la sauvegarder et que votre binôme puisse la récupérer.
Sur GitLab, on peut voir l’historique des modifications en cliquant sur «branch». Par défaut, lorsque vous déposez,
travomet un message d'information de la formeSoumission depuis ... par .... Pour mettre un message plus informatif, allez dans le répertoire de votre projet juste avant de déposer, et tapez la commande suivante :git commit -am "<Message décrivant la modification>"
Avant de déposer, vous pouvez voir la liste des fichiers modifiés avec
git status
Les fichiers marqués «Untracked files» sont ignorés par Git. Pour qu’il en tienne compte il faut faire :
git add <NomDuFichier>
Vous pouvez voir la liste des modifications elles-mêmes avec :
git diff
Les lignes supprimées sont en rouge, celles ajoutées en vert. S’il y a plusieurs pages de modifications vous pouvez vous déplacer avec les flèches. Tapez «q» pour sortir quand vous avez fini.
Nous vous encourageons à explorer plus loin les fonctionnalités de Git!
Comment travailler à deux#
Programmation côte à côte#
Les deux personnes travaillent côte à côte, chacune sur son propre poste et sur son propre code, mais en échangeant constamment sur comment procéder, analyser les bogues, etc
Programmation en binôme#
«La programmation en binôme (de l'anglais pair programming), parfois appelée programmation par paires ou binômage, est une méthode de travail dans laquelle deux développeurs travaillent ensemble sur un même poste de travail. La personne qui rédige le code est appelée conducteur (driver). La seconde personne, appelée observateur (observer), assiste le conducteur en décelant les imperfections, en vérifiant que le code implémente correctement le design et en suggérant des alternatives de développement. Les rôles s'échangent régulièrement pendant la séance de programmation1.» Wikipedia
Une bonne habitude : changer de rôle toutes les cinq minutes en vous passant le clavier.
À la fin de la session, un partage de code doit être fait pour que les deux personnes disposent du code.
Répartition des tâches#
Les deux personnes se répartissent les tâches à réaliser et mettent régulièrement leur code en commun.
Inconvénient : les projets sont souvent conçus avec un fil directeur de questions progressives. En attaquant directement une question sans avoir fait les précédentes, on ne bénéficie pas de ce fil directeur.