메뉴
HN
Hacker News • 31일 전

Maiao: 깃허브·깃랩 등에서 쓰는 게릿 스타일 코드 리뷰 도구

IMP
5/10
핵심 요약

Maiao는 GitHub, GitLab, Gitea 등 다양한 git 호스팅 서비스에서 Gerrit 방식의 코드 리뷰 워크플로우를 구현하는 오픈소스 도구입니다. 커밋마다 자동으로 PR/MR을 생성하고 스택형 구조로 연결해, 큰 기능을 작고 리뷰하기 쉬운 단위로 나눠 개발할 수 있게 해줍니다. 원본 저장소가 더 이상 유지보수되지 않아 커뮤니티 포크로 개발이 이어지고 있습니다.

번역된 본문

Maiao 참고: 이것은 adevinta/maiao의 커뮤니티 포크입니다. 원래 유지보수자들이 Adevinta를 떠났고 상위 저장소는 더 이상 활발히 관리되지 않아, 이 포크는 runetes/maiao에서 개발을 이어갑니다.

GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud, Cursor Origin에서 Gerrit 스타일의 코드 리뷰 워크플로우를 제공합니다.

개요 Maiao는 스택형 풀 리퀘스트(또는 머지 리퀘스트)의 강력함을 여러분의 git 호스팅 서비스에 가져다줍니다. 이를 통해 큰 기능을 작고 리뷰 가능한 커밋으로 나눌 수 있으며, 각 커밋이 자체적인 PR/MR이 됩니다.

Maiao란? Maiao는 다음을 수행하는 git review 명령어를 제공합니다:

브랜치의 각 커밋마다 PR/MR 생성 적절한 부모-자식 종속성으로 PR/MR 자동 스태킹 지원되는 경우 네이티브 스택 등록(GitHub Stacks, GitLab 자동 감지 스택) git commit --fixup을 활용한 우아한 픽스업 처리 Change-IDs를 통한 커밋 추적(Gerrit commit-msg 훅 사용) PR/MR이 병합되면 스택 자동 리베이스 원격 URL에서 제공자 자동 감지 지원 제공자 제공자 PR/MR 유형 WIP/Draft 네이티브 스택 GitHub 풀 리퀘스트 API 필드 예 (명시적 등록) GitLab 머지 리퀘스트 Draft: 제목 접두어 예 (대상 브랜치에서 자동 감지, 최대 20개 MR) Gitea 풀 리퀘스트 WIP: 제목 접두어 아니오 Forgejo/Codeberg 풀 리퀘스트 WIP: 제목 접두어 아니오 Bitbucket Cloud 풀 리퀘스트 지원 안 함 아니오 Cursor Origin (베타) 풀 리퀘스트 API 필드 예 (parentPullNumber)

Maiao는 알려진 호스트(github.com, gitlab.com, codeberg.org, bitbucket.org, origin.cursor.com)의 경우 원격 URL에서 제공자를 자동으로 감지합니다. 셀프 호스팅 인스턴스의 경우 처음 사용 시 선택을 요청하고 git config maiao.provider에 저장합니다.

빠른 예제

여러 커밋 만들기

git commit -m "사용자 인증 추가" git commit -m "인가 미들웨어 추가" git commit -m "관리자 엔드포인트 추가"

모든 커밋에 대해 스택형 PR/MR 생성

git review

결과: 세 개의 PR/MR이 생성되고 스택으로 연결됨:

PR #1: 사용자 인증 추가 → main PR #2: 인가 미들웨어 추가 → PR #1 PR #3: 관리자 엔드포인트 추가 → PR #2 핵심 장점 세분화된 리뷰: 각 커밋을 독립적으로 리뷰해 더 빠르고 집중된 피드백 가능 명확한 히스토리: PR/MR당 하나의 논리적 변경으로 깔끔한 git 히스토리 유지 쉬운 픽스업: git commit --fixup 로 리뷰 피드백 반영 자동 스태킹: 도구가 PR/MR 종속성을 자동으로 관리 네이티브 스택: GitHub Stacks 및 GitLab 자동 감지 스택과 통합 병합 감지: PR/MR이 병합되면 스택이 자동으로 업데이트 리베이스 통합: 업스트림 변경 사항을 우아하게 처리 다중 제공자: GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud, Cursor Origin에서 작동 GitHub 네이티브 스택 Maiao는 GitHub 네이티브 스택을 점진적 향상 기능으로 취급합니다. 두 개 이상의 PR이 푸시되면 Maiao가 Stacks API를 조사(24시간 캐시)하고 지원되는 경우 PR들을 스택으로 등록합니다. 구버전 GitHub Enterprise에서는 이 기능이 자동으로 건너뛰어지며, 브랜치 기반 스태킹은 이전처럼 계속 작동합니다.

git config로 제어 (기본값: auto)

git config maiao.useNativeStack auto # 가능하면 사용, 아니면 건너뜀 git config maiao.useNativeStack true # 항상 등록, 불가하면 경고 git config maiao.useNativeStack false # 완전히 비활성화 문서 시작하기 - 설치 및 워크플로우 가이드 작동 방식 - 기술 세부사항 및 아키텍처 가격 - 무료 오픈소스 스택형 디프 알아보기 Maiao는 스택형 디프(stacked diffs) 방법론을 구현합니다. 자세한 내용:

Stacked Diffs Versus Pull Requests - Jackson Gabbard의 철학에 관한 기초 글 Graphite의 Stacked Diffs 가이드 - 워크플로우와 모범 사례에 대한 포괄적 가이드 The Pragmatic Engineer: Stacked Diffs - 업계 분석 및 채택 패턴 (유료) 왜 "Maiao"인가? Maiao가 사용자에게 풀 리퀘스트에서 더 작고 좋은 커밋을 만들도록 장려하기 때문에, 작은 섬의 이름을 따서 지어졌습니다.

기여 기여를 환영합니다! 자세한 내용은 CONTRIBUTING.md를 참고하세요.

라이선스 MIT 라이선스 - DISCLAIMER 참고.

원문 보기
원문 보기 (영어)
Maiao Note: This is a community fork of adevinta/maiao . The original maintainers are no longer at Adevinta and the upstream repository is no longer actively maintained. This fork continues development under runetes/maiao . Gerrit-style code review workflow for GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud, and Cursor Origin Maiao brings the power of stacked pull requests (or merge requests) to your git hosting provider, enabling you to break large features into small, reviewable commits where each commit becomes its own PR/MR. What is Maiao? Maiao provides the git review command that: Creates one PR/MR per commit in your branch Stacks PRs/MRs automatically with proper parent-child dependencies Registers native stacks when available (GitHub Stacks, GitLab auto-detected stacks) Manages fixups elegantly using git commit --fixup Tracks commits via Change-IDs (using the Gerrit commit-msg hook) Auto-rebases your stack when PRs/MRs get merged Auto-detects your provider from the remote URL Supported Providers Provider PR/MR type WIP/Draft Native stacks GitHub Pull Request API field Yes (explicit registration) GitLab Merge Request Draft: title prefix Yes (auto-detected from target branch, up to 20 MRs) Gitea Pull Request WIP: title prefix No Forgejo/Codeberg Pull Request WIP: title prefix No Bitbucket Cloud Pull Request Not supported No Cursor Origin (beta) Pull Request API field Yes ( parentPullNumber ) Maiao auto-detects the provider from your remote URL for known hosts ( github.com , gitlab.com , codeberg.org , bitbucket.org , origin.cursor.com ). For self-hosted instances, it prompts on first use and saves the choice to git config maiao.provider . Quick Example # Make multiple commits git commit -m " Add user authentication " git commit -m " Add authorization middleware " git commit -m " Add admin endpoints " # Create stacked PRs/MRs for all commits git review Result : Three PRs/MRs created and stacked: PR #1: Add user authentication → main PR #2: Add authorization middleware → PR #1 PR #3: Add admin endpoints → PR #2 Key Benefits Granular Reviews : Each commit reviewed independently for faster, focused feedback Clear History : One logical change per PR/MR maintains clean git history Easy Fixups : Address review feedback with git commit --fixup <sha> Automatic Stacking : Tool manages PR/MR dependencies automatically Native Stacks : Integrates with GitHub Stacks and GitLab's auto-detected stacks Merge Detection : Stack updates automatically when PRs/MRs merge Rebase Integration : Handles upstream changes gracefully Multi-Provider : Works across GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud, and Cursor Origin Native GitHub Stacks Maiao treats GitHub native stacks as a progressive enhancement. When two or more PRs are pushed, Maiao probes the Stacks API (cached for 24 hours) and registers the PRs as a stack if supported. On older GitHub Enterprise instances the feature is silently skipped — branch-based stacking still works as before. # Control via git config (default: auto) git config maiao.useNativeStack auto # use when available, skip otherwise git config maiao.useNativeStack true # always register; warn if unavailable git config maiao.useNativeStack false # disable entirely Documentation Getting Started - Installation and workflow guide How Does It Work - Technical details and architecture Pricing - Free and open source Learn About Stacked Diffs Maiao implements the stacked diffs methodology. Learn more: Stacked Diffs Versus Pull Requests - Jackson Gabbard's foundational article on the philosophy Graphite's Guide to Stacked Diffs - Comprehensive guide to the workflow and best practices The Pragmatic Engineer: Stacked Diffs - Industry analysis and adoption patterns (paywalled) Why "Maiao"? As Maiao encourages users to create smaller and nicer commits in their pull requests, it has been given the name of a tiny island: Contributing Contributions are welcome! See CONTRIBUTING.md for details. License MIT License - see DISCLAIMER.md for details.