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 en 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 utilisez pour télécharger et déposer vos
devoirs (via le tableau de bord, ou le script 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>
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 que votre binôme y ait accès il faut suivre la procédure suivante :
Déposez votre travail pour vous assurer que votre dépôt est bien créé et est à jour.
Depuis le tableau de bord, donnez accès à votre binôme avec l’action «Partage avec» en spécifiant l’identifiant
prénom.nom
de votre binôme.
Votre binôme a maintenant accès en lecture à votre devoir.
Alternative : utiliser l’interface de GitLab
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».
Alternative : depuis le terminal
Utilisez la commande suivante, en remplaçant Semaine2
par le nom du
devoir et jeanne.dupont
par l’identifiant de votre binôme.
cd ~/IntroScienceDonnées
./course.py share_with Semaine2 jeanne.dupont
Indiquer à GitLab que vous travaillez en binôme#
Avec votre binôme, choisissez entre vos deux dépôts lequel sera le dépôt principal qui sera corrigé par l’équipe enseignante. Appelons A et B les deux membres de votre binôme, de sorte que A soit le propriétaire du dépôt principal.
Procédure:
Membre B : depuis le tableau de bord utilisez l’action «Définir le dépôt principal» en spécifiant l’identifiant
prénom.nom
de A.Tous les membres : vérifiez le résultat de la manœuvre: après avoir relancé le tableau de bord, les identifiants
prénom.nom
de A et de B doivent apparaître pour le devoir, avec des liens vers leurs dépôts respectifs, et une étoile pour marquer le dépôt principal.
Alternative : depuis le terminal
Utilisez la commande suivante, en remplaçant Semaine2
par le nom du
devoir et jeanne.dupont
par l’identifiant de votre binôme.
cd ~/IntroScienceDonnées
./course.py submit Semaine2 --leader_name jeanne.dupont
Attention
Nous ne consulterons que le devoir de A : à charge pour vous de vous assurer que celui-ci contient bien l’intégralité du travail du binôme!
Changement de groupe
Si
A
, propriétaire du dépôt principal, utilise l’action «Changer de groupe», alors le binôme toute entier change de groupe.Si
B
utilise l’action «Changer de groupe», alors le lien de binôme est rompu. Pour recréer le lien de binôme, ou en créer un autre à la place, il faut reprendre la procédure ci-dessus.
Pour en savoir plus
L’action «Définir le dépôt principal» configure votre dépôt pour être une bifurcation (fork) du dépôt de votre binôme.
Le dépôt initial, ou l’action «Changer de groupe» configure votre dépôt pour être une bifurcation (fork) du dépôt du devoir du groupe spécifié.
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
ProjetBinome
qui 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,
travo
met 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 pairs, 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 : changez 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: en ISD, les TP et les projets sont conçus avec un fil directeur de questions progressives. Cette méthode n’est pas recommandée ici.