Les Merge Requests sur GitLab : Collaborer et valider le code
C'est quoi une Merge Request et pourquoi l'utiliser ?
La Merge Request (ou MR) est sans doute la fonctionnalité la plus importante pour le travail en équipe sur GitLab. Une fois que vous avez fini de coder une fonctionnalité sur votre branche isolée, vous ne pouvez pas simplement l'injecter dans le code principal sans vérification. C'est ici qu'intervient la Merge Request.
Imaginez que la Merge Request est une relecture de code officielle. Vous dites à vos collègues : "J'ai terminé mon travail sur cette branche, voici les changements que je propose d'ajouter au projet principal. Pouvez-vous vérifier si tout est correct ?". Cela permet de discuter des modifications, de suggérer des améliorations et de s'assurer qu'aucun bug ne rentre dans la version stable du logiciel.
Information importante
Pour créer une Merge Request, vous devez impérativement avoir travaillé sur une branche différente de la branche principale (main). Si vous avez oublié comment faire, relisez le chapitre sur la création de branches.
Les étapes pour créer une Merge Request
Le processus se déroule sur l'interface web de GitLab et permet de documenter vos intentions avec précision avant la fusion finale.
Accéder à l'onglet dédié
Rendez-vous sur la page de votre projet. Dans le menu latéral de gauche, cliquez sur Code puis sur Merge Requests. Pour lancer une nouvelle demande, cliquez sur le bouton bleu New merge request.
"L'onglet Merge Requests centralise toutes les propositions de changements"
Sélectionner les branches source et cible
GitLab va vous demander de comparer deux univers distincts :
- Source branch : C'est la branche où vous avez écrit votre nouveau code.
- Target branch : C'est la branche de destination, généralement main.
"Choisissez bien votre branche de travail comme source et main comme cible"
Cliquez sur le bouton Compare branches and continue pour passer à la suite de la configuration de la MR.
Décrire et assigner le travail
Cette étape est cruciale pour que vos collègues comprennent l'objectif de vos modifications. Vous devez remplir plusieurs champs :
- Title : Donnez un nom explicite à votre modification. Vous pouvez cocher Mark as draft pour indiquer que votre travail est encore en cours et empêcher une fusion accidentelle.
- Description : Détaillez le contenu de vos changements. C'est l'endroit idéal pour lier un ticket (ex: "Closes #1") afin d'automatiser la clôture des tâches.
- Assignee : Désignez le responsable de la fusion. Le lien "Assign to me" permet de vous l'attribuer en un clic.
- Reviewer : Choisissez les collègues chargés de la revue de code. Leur validation est souvent requise avant toute intégration.
- Milestone & Labels : Liez votre demande à un jalon temporel ou ajoutez des étiquettes pour catégoriser vos modifications (ex: bug, feature).
- Merge can start : Cette option permet de définir si la fusion peut se faire à tout moment ou si elle doit attendre que certains critères (comme le passage des tests) soient remplis.
- Merge options : Deux réglages essentiels pour garder un projet propre :
- Delete source branch : Supprime automatiquement votre branche de travail après la fusion pour éviter d'encombrer le dépôt.
- Squash commits : Fusionne tous vos commits intermédiaires en un seul commit propre pour simplifier l'historique Git du projet.
Soumettre la demande
Une fois que tout est prêt, cliquez sur le bouton Submit merge request. Votre demande est maintenant publiée. Vos collègues peuvent voir les différences de code (diff), laisser des commentaires sur des lignes précises et finalement cliquer sur Merge pour intégrer officiellement votre travail.
"Une fois publiée, la MR devient un espace de discussion technique"
Conclusion
La Merge Request est le pilier de la qualité logicielle sur GitLab. Elle transforme l'écriture du code en un effort collectif, transparent et sécurisé. C'est le moment où les idées sont partagées et validées avant d'être déployées en production.
Pour rendre vos flux de travail encore plus professionnels, il est possible de lier automatiquement vos demandes aux tickets résolus. C'est ce qu'on appelle le référencement d'issues, et nous allons voir comment l'utiliser dans le chapitre suivant.
Espace commentaire
Écrire un commentaire
Rejoignez la discussion
Vous devez être connecté pour poster un message.
28 commentaires
Pensez à bien checker vos
diffavant de cliquer sur Merge. Une relecture rapide évite 90% des régressions en prod.Clique sur le bouton
Mark as readyen haut de la page de la MR. C'est tout.Qu'est-ce qu'on fait si la MR est bloquée par un
Draftoublié ?Oui, édite simplement la description de la MR et ajoute
Closes #123. GitLab fera le lien immédiatement.J'ai oublié de lier mon issue, je peux le faire après coup ?
Oui, dans
Merge request approvals. Tu peux définir un nombre minimum d'approbateurs requis.C'est possible de forcer une relecture par au moins deux personnes ?
De rien. Pense aussi à utiliser des
Labelspour filtrer tes MR, ça aide quand tu en as 50 en attente.Merci pour l'astuce sur le
Squash commits, ça a rendu notre repo beaucoup plus propre.GitLab propose un éditeur de conflit si c'est simple. Sinon, fais-le en local :
J'ai un souci de conflit de fusion. Comment le résoudre proprement via l'interface ?
Tu peux modifier la MR à tout moment dans la barre latérale droite. Clique sur
Editau niveau desReviewers.Comment je fais pour ajouter un reviewer après avoir créé la MR ?
T'as peut-être pas les permissions de
Developersur le projet. Check ton rôle dans les membres.Le bouton
Mark as draftest grisé chez moi, une idée ?Vérifie que le numéro est correct et que le ticket est bien dans le même projet. Ça ne marche pas entre deux projets différents sans config spécifique.
Pourquoi mon ticket ne se ferme pas automatiquement malgré le
Closes #1dans la description ?Oui, dans
Settings > Merge requests, cocheDelete source branch by default. Ça évite de polluer le repo avec des branches mortes.Est-ce qu'on peut forcer la suppression de la branche source après fusion par défaut pour toute l'équipe ?
Si c'est supprimé côté serveur, c'est mort. Repars de
mainet crée une nouvelle branche.J'ai supprimé ma branche source par erreur avant de valider la MR. Je peux la restaurer ?
Il faut configurer les
Merge pipelinedans les réglages du projet. Sinon, tu peux utiliser un fichier.gitlab-ci.ymlpour bloquer la fusion via les règles d'approbation.Comment on bloque la fusion tant que les tests ne sont pas verts ?
Le squash compresse tes 15 commits brouillons en un seul propre. C'est indispensable pour garder un historique lisible sur
main. Si tu veux garder chaque détail, ne coche pas l'option.C'est quoi la différence entre
Squash commitset un merge normal ? J'ai peur de perdre l'historique.