Une pull request sur un vrai serveur
Une équipe garde son code sur un serveur comme Gitea ou GitHub. Personne ne modifie directement la branche principale. On pousse une branche, on ouvre une pull request, et un collègue la relit d’abord.
Dans cette leçon, vous faites tout cela sur le Gitea du labo, du push jusqu’à la fusion.
À la fin de cette leçon
Remarque
Je peux pousser une branche, ouvrir une pull request sur un serveur et la fusionner.
Mots-clés
| Mot | Ce que ça veut dire |
|---|---|
| Pull request | une demande de fusion d’une branche, avec une page de relecture |
| API | un moyen pour un programme de demander une action à un serveur |
| Fusionnable | qui se fusionne sans aucun conflit |
| Commit de fusion | un commit à deux parents qui réunit deux branches |
| Branche suivie | la branche distante liée à votre branche |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La branche doit d’abord être sur le serveur
Une pull request a besoin que la branche existe sur le serveur, donc vous la poussez. Git ne peut pas ouvrir la demande à votre place.
Créez d’abord un dépôt sur Gitea. Un programme peut le faire en appelant son API. L’option -u de git push lie votre branche à sa jumelle distante, la branche suivie. Le mot de passe du labo est public : vous pouvez le taper dans une adresse ici. Ne le faites jamais avec un vrai mot de passe.
Créer un dépôt sur Gitea
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"name":"cantine-revue","auto_init":true,"default_branch":"main"}' http://gitea:3000/api/v1/user/reposAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le cloner
git clone http://student:student@gitea:3000/student/cantine-revue.gitAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Créer une branche pour le changement
git -C cantine-revue switch -c prix-theAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Ajouter une ligne au README
printf 'Le the coute 2 euros des lundi.\n' >> cantine-revue/README.mdAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Enregistrer le changement
git -C cantine-revue commit -am "Indiquer le prix du the"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Pousser la branche
git -C cantine-revue push -u origin prix-theAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Ouvrir la pull request, puis la relire
Vous pouvez cliquer sur Nouvelle pull request, ou interroger l’API, ce que fait le bouton. Le serveur calcule alors si la branche est fusionnable.
La personne qui relit lit le diff et écrit des commentaires. Gitea ne laisse pas approuver son propre changement : ici, vous commentez. Dans une équipe, un collègue approuve.
Ouvrir la pull request
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"title":"Indiquer le prix du the","head":"prix-the","base":"main","body":"Le the coute 2 euros des lundi."}' http://gitea:3000/api/v1/repos/student/cantine-revue/pullsAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Demander si elle fusionne sans conflit
curl -s http://gitea:3000/api/v1/repos/student/cantine-revue/pulls/1 | grep -o '"mergeable":[a-z]*'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire un commentaire de relecture
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"body":"Cela me semble juste."}' http://gitea:3000/api/v1/repos/student/cantine-revue/issues/1/commentsAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lire le diff comme un relecteur
curl -s http://gitea:3000/api/v1/repos/student/cantine-revue/pulls/1.diffAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
La fusion se fait sur le serveur
Quand la relecture est finie, quelqu’un clique sur Fusionner. Le serveur crée un commit de fusion sur main. Votre ordinateur ne le sait pas encore.
Vous lancez donc git fetch, qui télécharge les nouveautés sans toucher à vos fichiers. Puis vous lisez l’historique de origin/main, la copie que Git garde de la branche du serveur.
Fusionner la pull request
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"Do":"merge"}' http://gitea:3000/api/v1/repos/student/cantine-revue/pulls/1/mergeAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Télécharger les nouveautés
git -C cantine-revue fetchAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Dessiner l’historique de main sur le serveur
git -C cantine-revue --no-pager log --graph --format=%s origin/mainAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
On croit souvent que fusionner une pull request change les fichiers de son propre ordinateur. Ce n’est pas vrai. La fusion se fait sur le serveur. Lancez git fetch pour la voir, puis passez sur main et lancez git pull pour ramener la fusion dans votre propre main.