Wat is een pull request?

Een pull request is een tussenstap voor het mergen van branches. Pull request geven de mogelijkheid om andere project leden een review te laten doen op het gemaakte werk/veranderingen. Bij goedkeuring kunnen de veranderingen worden gemerged met de andere branch. Een pull request is ook niet een standaard item binnen Git, maar wel bij onder andere GitHub en GitLab.

Drafts

Draft pull requests zijn beschikbaar in publieke repositories binnen organisaties. Draft pull requests kunnen niet gemerged worden. Er kan wel feedback ontvangen op de draft pull request. Een draft pull request is een handige tool om te gebruiken in een vroege fase van een toevoeging/feature.

Hoe zit een pull request in elkaar?

Pull requests vereisen dat er minimaal twee branches binnen een repository bestaan. Hierbij is de base (in dit geval main) de branch waar de code wordt samengevoegd met de bestanden uit de compare branch (in dit geval content). Figuur 1: Screenshot van de twee branches waar een pull request mee gemaakt wordt

Verder kunnen meerdere eisen gesteld worden aan een pull request:

  • Reviewers: Er kunnen specifieke reviewers worden aangevraagd voor een pull request. Daarnaast kunnen mensen zelf altijd een review achterlaten die de rechten hebben binnen het project.
  • Discussions: Er kunnen comments geplaatst worden bij de gemaakte veranderingen. Hierin kunnen bijvoorbeeld veranderingen worden aangevraagd en suggesties worden geopperd.
  • Commits: De commit die bij een pull request worden worden weergegeven in een eigen tab. Hierin is terug te vinden wie hebben gewerkt aan de branch en welke veranderingen zijn gemaakt door de naamgeving van de commit. Het is dus verstandig om duidelijke naamgeving te hebben voor commits, zodat dit onder andere hier duidelijk terug te lezen is.

Review

Er kan een review gegeven op een pull request via de GitHub pagina. In de review kunnen veranderingen aangevraagd kunnen worden en opmerkingen achtergelaten. Een pull request kan een regel hebben dat de aangevraagde veranderingen eerst moeten worden doorgevoerd voordat er gemerged kan worden. Figuur 2: Voorbeeld hoe een pull request wordt tegengehouden doordat er nog veranderingen zijn aangevraagd

Discussions

Bij de veranderingen kunnen comments geplaatst worden met suggesties/aanpassingen. Deze kan iemand anders bekijken en behandelen. Bij elke comment is het mogelijk om zelf comments achter te laten om een discussie te hebben over de suggestie. Dit zorgt voor transparantie over de communicatie binnen een team. Verder is er een knop om de comment te sluiten beschikbaar als de suggestie is toegepast of niet nodig was om toe te passen.

Wat kan je met een pull request?

Pull requests hebben verschillende manieren om het effectief te gebruiken:

  • Navolgbaarheid: Pull requests kunnen gebruikt worden om meer inzicht te krijgen van de navolgbaarheid van een project.
  • Protection rules: Zoals bij de branch protection rules (3. Git Branches) te zien was, kan het ook zijn dat code alleen op een branch gepusht kan worden door middel van een pull request vanaf een andere branch. Dit is een beschermingsmaatregel voor je project.
  • Review: Een review op gemaakt werk zorgt ervoor dat er een extra controle op het werk komt, waardoor de kwaliteit van het gemaakte werk hoger wordt.
  • Merge conflicten: Merge conflicten kunnen ontstaan bij het aanmaken van een pull request. Met een pull request is er een visuele weergave van de conflicten en is het mogelijk om deze op te lossen.

Casus

Anne heeft op een feature-branch een nieuwe feature gemaakt. Dit wil zij graag in de dev-branch opnemen. Anne wil alleen wel dat er nog even naar haar werk gekeken wordt, in het geval zij iets over het hoofd heeft gezien. Zij maakt via GitHub een pull request aan op het project van de feature-branch naar de dev-branch. Hieraan wordt Bert toegevoegd als reviewer.

Bert krijgt de melding dat hij gevraagd is om een pull request te reviewen. Hij loopt de veranderingen door die Anne heeft gemaakt, maar merkt nog een foutje in de code op. Hij maakt bij dit stukje code een comment aan met de suggestie wat hier verbeterd kan worden. De rest van de veranderingen heeft Bert beoordeeld en goedgekeurd.

De merge kan nog niet plaatsvinden, wat er is nog een comment open. Nadat Bert Anne heeft gemeld dat hij een verandering heeft aangevraagd, gaat Anne deze bekijken. Zij ziet dat zij een fout had gemaakt en past dit aan. Hierna sluit zij de comment en nu komt de optie beschikbaar om de pull request te mergen.

Bronnen

Pull requests: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests


Volgende stap: Stappen pull requests