Objectifs

Les applications développées avec Git sont souvent hébergées dans une forge (publique ou privée selon la nature du logiciel) en plus de la copie locale de travail.

L’objectif de cette activité est d’expérimenter le flux de travail (workflow) dans le cadre d’un développement en équipe :

  • création d’un projet et ajout des membres de l’équipe ;
  • clonage du projet ;
  • développement d’une fonctionnalité dans une branche dédiée ;
  • rebasage et gestion des conflits ;
  • requête de tirage / fusion ;
  • revue de code et validation d’une demande de tirage / fusion.

La forge utilisée pour l’experimentation est Forgejo, disponible à l’adresse https://gitlab.sio.local (sans commentaires).

Préparatifs

  • Créer si nécessaire une paire de clés : ssh-keygen.
  • Charger sa clé privée privée : ssh-add.
  • S’inscrire sur la forge et y téléverser sa clé SSH publique (cf cat ~/.ssh/id_ed25519.pub).

Expérimentation

Les mêmes tâches sont réalisées plusieurs fois (quatre pour la mise en commun, avec un niveau croissant de difficulté) ; cette approche devraient conduire à une bonne maîtrise du flux de travail en équipe, compétence essentielle dans un contexte professionnel.

Initialisation d’un projet sur la forge

Le travail doit être réalisé en binômes : chaque membre du binôme doit :

  • créer et initialiser un projet sur la forge ;
  • inviter l’autre membre du binôme dans le projet ;
  • cloner son projet et celui de son binôme (protocole SSH).

Préparer le terrain des conflits

Chaque membre du binôme doit :

  • créer un fichier Python commun.py (une vingtaine de lignes) ;
  • indexer (cf git add) ce fichier et valider (cf git commit) ;
  • pousser son dépôt vers la forge (git push) ;
  • mettre à jour (git pull) le dépôt de son binôme, après que celui-ci ait fait son “push"…

Développement de fonctionnalité

Pour chaque projet, chaque membre du binôme doit (individuellement) :

  • créer une branche “binome1/2" ;
  • y ajouter un autre fichier, et y modifier le fichier commun.py, en deux endroits, dont une ligne commune avec l’autre membre du binôme ;
  • indexer et valider les modifications.

1) Mise en commun - projet1-binôme1

Cette partie est à faire collectivement. L’objectif ici est d’être capable de réaliser les opérations pour partager son travail. Prendre des notes en s’aidant du cours.

  • Rebaser (inutile pour le premier, mais il faut le faire quand même) :
git switch main
git pull
git switch binome1
git rebase main
  • Pousser la branche vers le dépôt distant : git push -u origin binome1.
  • Sur l’interface web de la forge, initier PR / MR — cf “demande d’ajout" (binome1 → main).
  • Sur l’interface web de la forge, réviser et valider (autre membre du binôme) — cf bouton “Créer une révision de fusion” → “Fast-forward uniquement”.
  • Synchroniser la branche commune et supprimer la branche binome1 :
git switch main
git pull
git branch -d binome1
git push origin --delete binome1

2) Mise en commun - projet1-binôme2

S’appuyer sur ces notes pour réaliser les mêmes opérations, mais sur le poste de travail du deuxième membre du binôme ; des conflits devraient apparaître lors du rebasage :

  • Rebaser
  • Résoudre les conflits, puis :
git add -A
git rebase --continue
  • Pousser la branche vers le dépôt distant.
  • Initier PR / MR.
  • Réviser et valider (autre membre du binôme).
  • Synchroniser la branche commune et supprimer la branche binome2.

3) Mise en commun - projet2-binôme2

A partir des notes, préparer une liste d’action à réaliser, mais SANS écrire de commande : l’objectif est de monter en compétence et de connaître la commande correspondant à une tâche à réaliser.

4) Mise en commun - projet2-binôme1

Dernière étape de la progression : la maîtrise du flux de travail permettant de partager son travail. A réaliser de mémoire, SANS notes.