Maiao: Biến quy trình code review thành phong cách Gerrit trên GitHub, GitLab, Gitea
Maiao là công cụ mã nguồn mở mang luồng làm việc code review kiểu Gerrit (stacked PR) đến với GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud và Cursor Origin. Công cụ tự động tạo một PR/MR cho mỗi commit, xếp chồng chúng theo thứ tự phụ thuộc, hỗ trợ fixup và tự động rebase khi merge. Đây là giải pháp lý tưởng cho các đội ngũ muốn chia nhỏ tính năng lớn thành các thay đổi dễ review.

Maiao: Biến quy trình code review thành phong cách Gerrit trên GitHub, GitLab, Gitea
Maiao là một công cụ mã nguồn mở (MIT License) mang đến luồng làm việc code review kiểu Gerrit — hay còn gọi là stacked pull requests — cho các nền tảng git phổ biến hiện nay. Thay vì tạo một PR/MR khổng lồ cho cả feature, Maiao tự động chia nhỏ thành nhiều PR/MR nhỏ, mỗi PR tương ứng với một commit, giúp việc review trở nên nhanh chóng và tập trung hơn.
Maiao giải quyết vấn đề gì?
Trong quy trình phát triển phần mềm truyền thống, việc tạo một pull request khổng lồ với hàng chục commit là điều thường thấy. Điều này khiến cho việc review trở nên khó khăn, kéo dài thời gian merge và dễ bỏ sót lỗi. Maiao giải quyết triệt để vấn đề này bằng cách:
- Tự động tạo một PR/MR cho mỗi commit trong nhánh của bạn.
- Xếp chồng các PR/MR theo đúng thứ tự phụ thuộc (parent-child), giúp luồng review logic và mạch lạc.
- Đăng ký native stacks khi nền tảng hỗ trợ (GitHub Stacks, GitLab auto-detected stacks).
- Quản lý fixup thông minh bằng lệnh
git commit --fixupquen thuộc. - Theo dõi commit qua Change-IDs (sử dụng hook
commit-msgcủa Gerrit), giúp ánh xạ chính xác commit với PR. - Tự động rebase stack khi các PR/MR được merge, giữ lịch sử luôn sạch và cập nhật.
GitHub Actions
Các nền tảng được hỗ trợ
Maiao tự động phát hiện nhà cung cấp git từ URL remote cho các dịch vụ phổ biến. Đối với các instance tự host, bạn có thể cấu hình thủ công qua lệnh git config maiao.provider.
| Nhà cung cấp | Loại PR/MR | WIP/Draft | Native stacks |
|---|---|---|---|
| GitHub | Pull Request | API field | Có (đăng ký tường minh) |
| GitLab | Merge Request | Tiền tố Draft: | Có (tự động phát hiện, tối đa 20 MRs) |
| Gitea | Pull Request | Tiền tố WIP: | Không |
| Forgejo/Codeberg | Pull Request | Tiền tố WIP: | Không |
| Bitbucket Cloud | Pull Request | Không hỗ trợ | Không |
| Cursor Origin (beta) | Pull Request | API field | Có (parentPullNumber) |
Ví dụ nhanh về cách sử dụng
Giả sử bạn đang phát triển một tính năng lớn và đã tạo ba commit riêng biệt:
# Tạo nhiều commit
git commit -m "Thêm xác thực người dùng"
git commit -m "Thêm middleware phân quyền"
git commit -m "Thêm endpoints quản trị"
# Tạo stacked PRs/MRs cho tất cả commit
git review
Kết quả là ba PR/MR sẽ được tạo và xếp chồng tự động:
- PR #1: Thêm xác thực người dùng → nhánh
main - PR #2: Thêm middleware phân quyền → PR #1
- PR #3: Thêm endpoints quản trị → PR #2
Lợi ích chính mang lại cho đội ngũ phát triển
- Review chi tiết hơn: Mỗi commit được review độc lập, giúp phản hồi nhanh và tập trung hơn vào logic cụ thể.
- Lịch sử rõ ràng: Mỗi PR/MR là một thay đổi logic duy nhất, giữ lịch sử git sạch và dễ theo dõi.
- Fixup dễ dàng: Phản hồi review được xử lý ngay với
git commit --fixup, không cần tạo commit sửa lỗi rác. - Tự động hóa hoàn toàn: Công cụ quản lý dependencies giữa các PR, phát hiện merge và tự động rebase.
License
Downloads
Tích hợp Native Stacks trên GitHub
Maiao xem GitHub native stacks như một sự nâng cấp tiến bộ (progressive enhancement). Khi có từ hai PR trở lên được push, Maiao sẽ kiểm tra API Stacks (cached trong 24 giờ) và tự động đăng ký nếu được hỗ trợ. Trên các phiên bản GitHub Enterprise cũ, tính năng này sẽ được bỏ qua một cách lặng lẽ — cơ chế stacking dựa trên branch vẫn hoạt động bình thường.
Bạn có thể kiểm soát hành vi này qua lệnh:
# Mặc định: auto
git config maiao.useNativeStack auto # dùng khi có sẵn, bỏ qua nếu không
git config maiao.useNativeStack true # luôn đăng ký; cảnh báo nếu không khả dụng
git config maiao.useNativeStack false # tắt hoàn toàn
Tại sao nên chọn Maiao?
Maiao là một dự án mã nguồn mở và hoàn toàn miễn phí. Đây là bản fork từ dự án adevinta/maiao do cộng đồng tiếp tục phát triển, đảm bảo tính ổn định và cập nhật liên tục. Với khả năng hoạt động đa nền tảng, đặc biệt là hỗ trợ tốt cho các dịch vụ phổ biến tại Việt Nam như GitHub và GitLab, Maiao là công cụ hữu ích cho các đội ngũ đang tìm kiếm quy trình code review chuyên nghiệp và hiệu quả.
Workflow minh họa
Triết lý "Stacked Diffs"
Maiao áp dụng phương pháp stacked diffs — một phương pháp được nhiều kỹ sư hàng đầu tại các công ty công nghệ lớn áp dụng để tăng tốc độ review và giảm xung đột khi merge. Phương pháp này đặc biệt hữu ích cho các nhóm làm việc trên các feature phức tạp, nhiều lớp logic.
"Stacked diffs giúp bạn chia nhỏ công việc thành các phần nhỏ, dễ hiểu, dễ review và dễ merge — giống như viết một bài luận với nhiều đoạn văn rõ ràng thay vì một khối văn bản dài đặc."
Bạn đã sẵn sàng thử nghiệm quy trình code review hiện đại này cho dự án của mình chưa? Hãy bắt đầu ngay hôm nay với Maiao.