본문 바로가기
Gerrit/Gerrit 일반

2. Gerrit 이란?

by 실짱 2023. 10. 17.

1. 정의

Google 에서 개발한 웹UI 기반의 코드 리뷰 시스템이다.

이름의 유래애 대해서는 명확히 밝혀진것은 없다.

두가지 설이 있는데,

 

1) 네덜란드어 gerrit 에서 유래 : 네덜란드어로 gerrit 이라는 단어가 있는데, "spear rule" 또는 "ruler with a spear" 이라는 뜻이다. 검토와 판단의 과정을 통해 프로젝트에 기여하는 규칙을 관리하고, 이를 통해 프로젝트의 품질을 개선한다는 측면에서 상징적인 의미를 가진다는 설

2) Git + Error 의 조합 : Gerrit 은 결국 코드 저장소로 Git 을 내부적으로 관리하고 있기에 Git 으로 관리하는 에러 review 시스템의 조합이라는 설 , G + err(or) + it

 

2. 역사

Google 에서 AOSP (Android Open Source Project) 에 올라가는 코드들을 리뷰하기 위해 만들어진것이 시초이다. (안드로이드와 역사를 같이 한다)

 

더 긴 얘기가 궁금하면 아래 사이트에서 구경하자.

 

3. 주요 특징

 3-1> 점수제

리뷰어(Reviewer) 들은 리뷰이(Reviewee) 가 올린 수정 사항에 대해서 -2점~+2점까지 점수를 줄 수 있다.

최종적으로 +2 점을 받아야지만 리뷰이는 수정사항을 서버(origin)에 반영(merge) 할 수 있다.

Code-Review 라는 란에 -2점부터 +2점까지 점수를 줄 수 있다.
리뷰한 내용을 점수와 함께 표시할 수 있다.

 

 3-2> open privacy

기본적으로 모든 리뷰는 public open 이다. 즉 내가 원하지 않더래도 내가 올린 리뷰는 불특정 다수가 볼 수 있고 , 커멘트도 할 수 있고, 심지어는 repository 설정에 따라서 점수까지도 줄수 있다.

(ex> 게릿허브에 가면 게릿허브를 사용하는 수많은 개발자들의 리뷰를 자유롭게 보고 커멘트 할 수 있다. https://gerrithub.io/q/status:open+-is:wip)

이는 기본적으로 Google 이 대표하는 open source 진영의 특징이라고 볼 수 있다.

 

 3-3> Line 단위 리뷰 가능

전체적인 의견도 줄 수 있지만, 수정한 코드 라인별로 지적질을 할 수 도 있다.

개발자에게는 피가되고 살이된다.

 

 

4. Work flow

1> 개발자는 gerrit 의 project 를 로컬에 clone 해서 로컬 환경을 구축한다.

2> 수정사항이 준비되면 gerrit 에 push 한다.

3> gerrit website 는 2번에 push 된 수정사항에 대해서 web UI 를 만들어서 게시한다.

4> Reviewer 로 지정된 다른 개발자들은 Web UI 를 통해서 수정사항을 확인하고 자신의 의견을 개진한다.

5> 지적질 받은 부분이 있으면 , 말로 떼워도 되면 게릿 웹페이지에 답을 하고, 수정이 필요하다고 판단되면 수정하고 다시 푸쉬해서 2번부터 다시한다.

6> #2~#5 를 무한 반복하면서 +2점을 받을때까지 수정,논쟁을 계속한다.

7> +2 점을 받고, Verified+1 을 받으면 비로소 서버에 반영가능하게되고, 리뷰이가 직접 서버에 반영하면 수정사항 하나의 작업이 완료된다.

 

예시들

Frank 와 Daniel 은 계속 Ah.. / Hmm.. 을 통해 완전히 만족하고 있지는 않다.
Ivan 은 이 패치가 마음에 전혀 들지 않아 -2점을 줬다.

AriChoi 는

1> CI 빌드 성공해서 Verified+1 받고

2> 동료 리뷰어로부터 +1점도 받고

3> 최종 커미터가 +2점을 주어

4> 무사히 서버에 merge 를 잘 했다


  < Prev   1. 코드 리뷰                |                Next >   3. Gerrit Workflow 

 

 

'Gerrit > Gerrit 일반' 카테고리의 다른 글

1. 코드 리뷰  (0) 2023.10.17
3. Gerrit Workflow  (0) 2023.10.17
4. Git vs. Gerrit  (0) 2023.10.17
5. Gerrit 점수에 대한 단상  (2) 2023.10.17
6. Change ID  (0) 2023.09.01