Maiao is een community-fork van een tool die een code-review workflow in de stijl van Gerrit implementeert voor diverse git-hostingproviders, waaronder GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud en Cursor Origin.
De kern van de tool is het faciliteren van stacked pull requests (of merge requests). Hierbij wordt een grote feature opgesplitst in kleine, logische commits die elk hun eigen PR/MR krijgen, waardoor reviews granulaire en gefocuste feedback mogelijk maken.
Belangrijkste functionaliteiten:
git review commando: Automatiseert het aanmaken van PR's/MR's en het beheren van de ouder-kind relaties.
- Fixups: Eenvoudige verwerking van review-feedback via
git commit --fixup.
- Native integratie: Ondersteunt native stacks waar beschikbaar (zoals bij GitHub en GitLab).
- Automatisering: Automatische detectie van de provider via de remote URL en automatische rebase-acties bij merges.
Maiao is gebaseerd op de methodologie van "stacked diffs" en is beschikbaar onder de MIT-licentie.
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
| Provider | PR/MR type | WIP/Draft | Native stacks |
| GitHub | Pull Request | API-veld | Ja (expliciete registratie) |
| GitLab | Merge Request | Draft: titel-prefix | Ja (auto-detectie vanaf target branch, tot 20 MR's) |
| Gitea | Pull Request | WIP: titel-prefix | Nee |
| Forgejo/Codeberg | Pull Request | WIP: titel-prefix | Nee |
| Bitbucket Cloud | Pull Request | Niet ondersteund | Nee |
| Cursor Origin (beta) | Pull Request | API-veld | Ja (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.
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
| Provider | PR/MR type | WIP/Draft | Native stacks |
| GitHub | Pull Request | API-veld | Ja (expliciete registratie) |
| GitLab | Merge Request | Draft: titel-prefix | Ja (auto-detectie vanaf target branch, tot 20 MR's) |
| Gitea | Pull Request | WIP: titel-prefix | Nee |
| Forgejo/Codeberg | Pull Request | WIP: titel-prefix | Nee |
| Bitbucket Cloud | Pull Request | Niet ondersteund | Nee |
| Cursor Origin (beta) | Pull Request | API-veld | Ja (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.