Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Ouvrir et fusionner une pull request dans Gitea

Après cette leçon: Je peux pousser une branche, ouvrir une pull request sur un serveur et la fusionner.

Leçon de 60 min13 commandesLab Git et Gitea : apprendre clone, commit et push sur un serveur Git à soi

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

MotCe que ça veut dire
Pull requestune demande de fusion d’une branche, avec une page de relecture
APIun moyen pour un programme de demander une action à un serveur
Fusionnablequi se fusionne sans aucun conflit
Commit de fusionun commit à deux parents qui réunit deux branches
Branche suiviela 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

Commande
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/repos

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.

Le cloner

Commande
git clone http://student:student@gitea:3000/student/cantine-revue.git

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.

Créer une branche pour le changement

Commande
git -C cantine-revue switch -c prix-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.

Ajouter une ligne au README

Commande
printf 'Le the coute 2 euros des lundi.\n' >> cantine-revue/README.md

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.

Enregistrer le changement

Commande
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

Commande
git -C cantine-revue push -u origin prix-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.

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

Commande
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/pulls

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.

Demander si elle fusionne sans conflit

Commande
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

Commande
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/comments

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.

Lire le diff comme un relecteur

Commande
curl -s http://gitea:3000/api/v1/repos/student/cantine-revue/pulls/1.diff

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.

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

Commande
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/merge

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.

Télécharger les nouveautés

Commande
git -C cantine-revue fetch

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.

Dessiner l’historique de main sur le serveur

Commande
git -C cantine-revue --no-pager log --graph --format=%s origin/main

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.

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.

À propos de ce labo et de sa source: Lab Git et Gitea : apprendre clone, commit et push sur un serveur Git à soi

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.