Gerrit은 Google이 개발한 "Git 저장소 + 코드리뷰 시스템"을 통합한 오픈소스 툴이다.
Gitlab/GitHub처럼 코드를 저장하는 기능은 동일하지만, 코드 리뷰 중심으로 동작한다는게 가장 큰 차이점이다.
| 항목 | Gitlab/GitHub | Gerrit |
|---|---|---|
| 저장소 관리 방식 | 일반 Git 저장소 | Git 저장소 + 리뷰 서버 |
| 코드 리뷰 방식 | Merge Request(MR) 기반 | Change 기반(patch set) |
| Push 방식 | git push origin branch | git push origin HEAD:refs/for/<branch> |
| 코드 병합 권한 | MR 승인 시 자동 병합 가능 | 리뷰어가 +2 주면 관리자가 자동 병합됨 |
| 주요 목적 | 협업 + DevOps 통합 | 리뷰 중심의 품질 관리 |
| 웹 UI | 직관적인 GUI(이슈, MR, CI/CD 포함) | 리뷰 중심의 단순 UI (코멘트, diff 중심) |
| CI 연동 | GitLab CI 내장 | 외부(Jenkins 등)와 연동 필요 |
| 용어 | 의미 |
|---|---|
| change | 코드 리뷰의 기본 단위(GitLab의 MR에 해당) |
| Patch Set | 동일 Change 내에서 수정된 버전(리뷰 중간 수정) |
| Label | 리뷰 결과 점수(+2, +1, -1, -2, Verified 등) |
| Submit | 리뷰가 승인되어 최종 병합되는 과정 |
| refs/for/ | 리뷰를 위한 Git 네임스페이스(push할 때 사용) |
# 일반 GitLab Push
git push origin feature/login
# Gerrit 리뷰 등록용 push
git push origin HEAD:refs/for/main
Gerrit에서는 리뷰없이는 병합 불가가 원칙이다. 그래서 코드가 main 브랜치로 들어가는 흐름은 다음과 같다.
개발자 -> Gerrit -> 리뷰어 -> Jenkins -> Gerrit -> main
배워가는 과정으로 내용에 오류나 부족한 점이 있을 수 있습니다.
댓글로 알려주시면 바로 수정하겠습니다!!😂