Maiao

Maiao biedt een code-review workflow in de stijl van Gerrit voor GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud en Cursor Origin. Maiao brengt de kracht van "stacked pull requests" (of merge requests) naar jouw git-hostingprovider, waardoor grote functies kunnen worden opgesplitst in kleine, reviewbare commits, waarbij elke commit zijn eigen PR/MR wordt.

Wat is Maiao?

Maiao voorziet in het git review commando dat de volgende acties uitvoert:

  • Creëert één PR/MR per commit in je branch.
  • Stapelt PR's/MR's automatisch op met de juiste ouder-kind relaties (afhankelijkheden).
  • Registreert native stacks wanneer deze beschikbaar zijn (zoals GitHub Stacks en automatisch gedetecteerde stacks in GitLab).
  • Beheert "fixups" op een elegante manier via git commit --fixup.
  • Volgt commits via Change-IDs (met behulp van de Gerrit commit-msg hook).
  • Voert automatisch een rebase uit op je stack wanneer PR's/MR's worden samengevoegd (merged).
  • Detecteert automatisch de provider op basis van de remote URL.

Ondersteunde Providers

ProviderPR/MR typeWIP/DraftNative stacks
GitHubPull RequestAPI-veldJa (expliciete registratie)
GitLabMerge RequestDraft: titel-prefixJa (auto-detectie vanaf target branch, tot 20 MR's)
GiteaPull RequestWIP: titel-prefixNee
Forgejo/CodebergPull RequestWIP: titel-prefixNee
Bitbucket CloudPull RequestNiet ondersteundNee
Cursor Origin (beta)Pull RequestAPI-veldJa (parentPullNumber)

Maiao detecteert de provider automatisch vanuit de remote URL voor bekende hosts (github.com, gitlab.com, codeberg.org, bitbucket.org, origin.cursor.com). Voor self-hosted instanties vraagt het programma bij het eerste gebruik om de provider, waarna deze keuze wordt opgeslagen in git config maiao.provider.

Snel Voorbeeld

# Maak meerdere commits
git commit -m "Add user authentication"
git commit -m "Add authorization middleware"
git commit -m "Add admin endpoints"

# Creëer gestapelde PR's/MR's voor alle commits
git review

Resultaat: Drie PR's/MR's zijn aangemaakt en gestapeld:

  • PR #1: Add user authentication → main
  • PR #2: Add authorization middleware → PR #1
  • PR #3: Add admin endpoints → PR #2

Belangrijkste Voordelen

  • Granulaire Reviews: Elke commit wordt onafhankelijk beoordeeld voor snellere en gefocuste feedback.
  • Heldere Historie: Eén logische wijziging per PR/MR zorgt voor een schone git-historie.
  • Eenvoudige Fixups: Reageer op feedback van reviews met git commit --fixup <sha>.
  • Automatisch Stapelen: De tool beheert de afhankelijkheden tussen PR's/MR's automatisch.
  • Native Stacks: Integreert met GitHub Stacks en de automatisch gedetecteerde stacks van GitLab.
  • Merge-detectie: De stack wordt automatisch bijgewerkt wanneer PR's/MR's worden samengevoegd.
  • Rebase Integratie: Gaat zorgvuldig om met wijzigingen vanuit de upstream-branch.
  • Multi-Provider: Werkt over GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud en Cursor Origin.

Native GitHub Stacks

Maiao beschouwt native GitHub stacks als een progressieve verbetering. Wanneer twee of meer PR's worden gepusht, raadpleegt Maiao de Stacks API (gecached voor 24 uur) en registreert de PR's als een stack indien ondersteund. Op oudere GitHub Enterprise-instanties wordt deze functie stilzwijgend overgeslagen; stacken op basis van branches blijft dan gewoon werken.

Je kunt dit aanpassen via git config (standaard staat dit op auto):

  • git config maiao.useNativeStack auto — gebruik indien beschikbaar, anders overslaan.
  • git config maiao.useNativeStack true — altijd registreren; geef een waarschuwing als dit niet beschikbaar is.
  • git config maiao.useNativeStack false — volledig uitschakelen.

Documentatie

  • Getting Started - Installatie- en workflowhandleiding.
  • How Does It Work - Technische details en architectuur.
  • Pricing - Gratis en open source.

Meer leren over Stacked Diffs

Maiao implementeert de methodologie van "stacked diffs". Voor meer informatie kun je de volgende bronnen raadplegen:

  • Stacked Diffs Versus Pull Requests - Het basisartikel van Jackson Gabbard over de filosofie hierachter.
  • Graphite's Guide to Stacked Diffs - Een uitgebreide gids over de workflow en best practices.
  • The Pragmatic Engineer: Stacked Diffs - Industrieanalyse en adoptiepatronen (betaald artikel).

Waarom "Maiao"?

Omdat Maiao gebruikers aanmoedigt om kleinere en mooiere commits te maken in hun pull requests, is het vernoemd naar een klein eiland: Maiao.

Bijdragen en Licentie

Bijdragen zijn welkom! Raadpleeg CONTRIBUTING.md voor details.

De software is beschikbaar onder de MIT-licentie. Zie DISCLAIMER.md voor meer details.