Collaborer : équipes, issues et pull requests

Objectifs

À la fin de ce tutoriel, tu sauras :

  • O1. Créer une équipe et y inviter un coéquipier depuis /teams/new
  • O2. Ouvrir une issue pour décrire un problème ou une tâche à réaliser
  • O3. Ouvrir une pull request depuis une branche et la fusionner après review

Pré-requis

  • Technique : dépôt cloné en local (tutoriel 02 complété), accès à un second compte gitrust (ou un coéquipier disponible)
  • Pédagogique : tutoriel 02 — Cloner et pousser complété
  • Temps estimé : ~25 minutes

Vue d'ensemble

gitrust organise la collaboration autour de trois concepts qui s'enchaînent naturellement :

  • Une équipe (team) regroupe des personnes et définit leur niveau d'accès à un ou plusieurs dépôts. C'est le point d'entrée pour inviter quelqu'un sur un projet.
  • Une issue est une unité de travail : un bug à corriger, une feature à ajouter, une question à trancher. Elle porte un numéro (#N) qui sert de référence partout.
  • Une pull request (PR) est une demande de fusion d'une branche vers une autre. Elle lie le code proposé à l'issue qu'il résout et déclenche la review de l'équipe.
flowchart LR
    T[Équipe créée
/teams/new] --> R[Dépôt assigné
à l'équipe] R --> I[Issue ouverte
#1] I --> B[Branche créée
feat/fix-readme] B --> PR[Pull Request
ouverte] PR --> Rev[Review approuvée] Rev --> M[Fusion dans main] M --> C[Issue fermée
automatiquement]

Scaffolding niveau 2 : dans ce tutoriel, certaines commandes comportent un trou ___ à compléter. L'aide est donnée juste après le bloc de code — essaie d'abord sans regarder.


Étape 1 : Crée une équipe

Dans ton navigateur, navigue vers /teams/new.

Remplis le formulaire :

  • Nom de l'équipe : equipe-alpha (lettres minuscules, chiffres, tirets)
  • Description : Équipe de développement principale (optionnel)

Clique Créer l'équipe.

Sortie attendue : gitrust te redirige vers la page de l'équipe /teams/equipe-alpha. La page affiche l'équipe avec toi comme premier membre avec le rôle Owner.

Page de l'équipe nouvellement créée

Checkpoint : tu vois la page /teams/equipe-alpha avec ton pseudo listé en tant que membre. Si tu obtiens une erreur 422, le nom contient probablement des caractères interdits — utilise uniquement des minuscules et des tirets.


Étape 2 : Invite un coéquipier et assigne le dépôt

Sur la page de l'équipe, dans la section Membres, saisis le pseudo de ton coéquipier et clique Inviter.

Sortie attendue :

Membre ajouté à l'équipe.

Dans la section Dépôts, clique Ajouter un dépôt. Sélectionne mon-premier-depot dans la liste et choisis le niveau d'accès Developer. Clique Confirmer.

Sortie attendue :

Accès au dépôt accordé.

Checkpoint : ton coéquipier doit maintenant voir mon-premier-depot dans son tableau de bord. Demande-lui de vérifier. Le niveau Developer lui permet de cloner, pousser sur les branches non-protégées et ouvrir des PRs.


Étape 3 : Ouvre une issue

Dans ton navigateur, navigue vers /<tonpseudo>/mon-premier-depot/issues/new.

Remplis le formulaire :

  • Titre : Améliorer le README avec une description du projet
  • Description :
    Le fichier README.md est vide. Il faudrait ajouter :
    - Une description du projet
    - Les instructions d'installation
    

Clique Ouvrir l'issue.

Sortie attendue : gitrust crée l'issue et te redirige vers /<tonpseudo>/mon-premier-depot/issues/1. La page affiche l'issue avec le statut Ouverte et le numéro #1.

Issue ouverte avec statut « Ouverte »

Checkpoint : l'URL dans ton navigateur doit se terminer par /issues/1. Note ce numéro — tu l'utiliseras dans le message de commit pour fermer l'issue automatiquement.


Étape 4 : Crée une branche pour travailler

Dans ton terminal, depuis le dossier mon-premier-depot, crée une nouvelle branche :

git checkout -b ___

Complète ___ avec le nom de branche feat/ameliorer-readme. La convention type/description-courte rend les branches lisibles dans la liste.

Réponse :

git checkout -b feat/ameliorer-readme

Sortie attendue :

Switched to a new branch 'feat/ameliorer-readme'

Modifie le fichier README.md :

cat > README.md << 'EOF'
# mon-premier-depot

Un dépôt de démonstration gitrust.

## Installation

Cloner le dépôt :

```bash
git clone git@gitrust.example.com:tonpseudo/mon-premier-depot.git
EOF
Commite et pousse la branche :

```bash
git add README.md
git commit -m "améliore le README - closes #1"
git push origin feat/ameliorer-readme

Sortie attendue :

[feat/ameliorer-readme 7c3d4e5] améliore le README - closes #1
 1 file changed, 10 insertions(+), 1 deletion(-)
...
To git@gitrust.example.com:tonpseudo/mon-premier-depot.git
 * [new branch]      feat/ameliorer-readme -> feat/ameliorer-readme

Checkpoint : la sortie de git push montre [new branch] feat/ameliorer-readme. Si elle montre rejected, exécute d'abord git pull origin main --rebase.


Étape 5 : Ouvre une pull request

Dans ton navigateur, navigue vers /<tonpseudo>/mon-premier-depot/pulls/new.

gitrust peut avoir détecté ta branche et proposer une bannière « Ouvrir une PR pour feat/ameliorer-readme » — clique dessus si elle apparaît.

Remplis le formulaire :

  • Titre : Améliore le README avec description et installation
  • Branche source : feat/ameliorer-readme
  • Branche cible : main
  • Description : Closes #1 (gitrust fermera l'issue automatiquement à la fusion)
  • Reviewers : sélectionne ton coéquipier (s'il est disponible)

Clique Ouvrir la pull request.

Sortie attendue : gitrust crée la PR et te redirige vers /<tonpseudo>/mon-premier-depot/pulls/1.

Pull request ouverte avec diff visible

Checkpoint : la PR est bien à l'état Ouverte et l'onglet Fichiers modifiés montre les changements dans README.md. Si la PR est vide (pas de diff), vérifie que tu as bien sélectionné feat/ameliorer-readme comme branche source.


Étape 6 : Fusionne la pull request

Si ton coéquipier peut review, demande-lui d'approuver la PR avant de fusionner. Dans ce tutoriel, tu peux fusionner directement si tu es seul.

Sur la page de la PR, fais défiler jusqu'à la section Fusion. Sélectionne la stratégie Merge commit (par défaut). Clique Fusionner la pull request.

Sortie attendue (message dans l'interface) :

Pull request fusionnée avec succès.

La PR passe au statut Fusionnée (violet). Navigue vers /<tonpseudo>/mon-premier-depot/issues/1 — l'issue doit être Fermée automatiquement grâce au closes #1 dans le message de commit.

Issue fermée automatiquement après fusion

Checkpoint : l'issue #1 est au statut Fermée. La page principale du dépôt affiche le nouveau contenu du README.md. Si l'issue est encore ouverte, vérifie que le message de commit contenait exactement closes #1 (respecter la casse n'est pas requis, mais le numéro doit être correct).


Récapitulatif

  • O1 accompli : tu as créé l'équipe equipe-alpha via /teams/new, invité un membre et assigné le dépôt avec le niveau Developer
  • O2 accompli : tu as ouvert l'issue #1 pour décrire la tâche, obtenant une unité de travail traçable et numérotée
  • O3 accompli : tu as ouvert une PR depuis feat/ameliorer-readme, la fusionner a fermé l'issue automatiquement grâce à closes #1

Et si ça ne marche pas

Symptôme Cause probable Correction
Le coéquipier ne voit pas le dépôt dans son tableau de bord L'accès au dépôt n'a pas été correctement accordé à l'équipe Sur la page de l'équipe, vérifie que le dépôt apparaît dans la section Dépôts avec un niveau d'accès. Reconfirme si nécessaire
La PR n'a pas de diff (onglet Fichiers modifiés vide) La branche source est identique à la branche cible Vérifie que tu as bien poussé depuis feat/ameliorer-readme et non depuis main. Exécute git log --oneline main..feat/ameliorer-readme pour voir les commits en attente
L'issue #1 reste ouverte après fusion Le message de commit ne contient pas le mot-clé reconnu, ou le numéro est incorrect Les mots-clés acceptés sont closes, fixes, resolves (insensibles à la casse) suivi de #N. Vérifie le message exact avec git log --oneline
git push refusé avec remote: push blocked La branche main est protégée et le push direct y est interdit C'est normal : travaille toujours sur une branche séparée et utilise une PR pour fusionner dans main

Prochaine étape

04 — Automatiser avec la CI : écris ton premier .gitrust-ci.yml, déclenche un pipeline et lis le résultat (~20 min)