코드리뷰

Gerrit

dudntjgml 2023. 9. 8. 11:21

Gerrit Code Review

 - 구글에서 개발한 코드리뷰 툴
 - 코드 리뷰 기능과 Git 서버 저장소 관리 기능을 제공
 - commit 단위로 리뷰 진행

 

 

Gerrit 장점

- 메인 페이지 UI가 Your Turn, Outgoing reviews, Incomimng reviews, CCed on, Recently closed로 구성되어 있어
   해야할 일 바로 알 수 있음
- 커밋 단위로 리뷰하므로 더 작은 조각을 리뷰하여 리뷰 피로도가 적고 빠른 피드백 가능
- 커밋끼리 의존성 가질 수 있음
- 한 line 내에서도 특정 구간 선택 가능하여 명확한 커뮤니케이션 가능

 

 

Gerrit 특징

1. 리뷰 통과 조건 설정

- -2, -1, 0, +1, +2 점수를 매겨서 일정 점수 이상을 받으면 Submit(merge) 가능. 네이버에서는 코드에 심각한 문제가 있어 

  적용하면 안되는 코드에 -2를 부여하고, -2를 부여한 리뷰 의견이 있다면 +2를 부여한 리뷰 의견이 있어도 대상 브랜치에

  코드를 적용하지 않도록 함

 

2. IDE 도구와 연동

- Gerrit은 기본으로 웹 페이지에서 코드 리뷰를 진행. 하지만 Eclipse의 플러그인인 Mylyn을 사용하면 Eclipse에서 Gerrit 

  코드 리뷰 기능 사용 가능

 

3. 사용자 권한 관리

- Git은 권한 제어 기능이 없음. 하지만 아무리 작은 개발 그룹이라 할지라도 개발자 역할에 차이가 있고 프로젝트 별로

  담당자도 다르기 때문에 사용자의 권한을 관리해야 함. 따라서 Gerrit은 Git을 기반으로 사용하지만 프로젝트와 역할에 

  따라 접근 권한을 관리할 수 있는 권한 관리 기능을 제공

 

4. 다양한 인증 수단 지원

- Gerrit은 자체 인증 기능을 제공하지 않음. 대신 OpenID나 HTTP, LDAP와 같은 다양한 외부 인증 기능을 지원해 여러 

  개발 환경에 유연하게 대처 가능

 

5. CI 도구와 연동

- Jenkins와 같은 CI(continuous integration) 도구와 연동해 사용 가능. CI 도구나 자동 검증 시스템을 Gerrit과 연동하면 

  리뷰어가 직접 코드를 보기 전에 지금 보고 있는 변경 사항이 최소한의 테스트를 통과했으며 정상적으로 빌드되고 작동

  하는 코드라는 것을 알 수 있음. 이를 통해 리뷰어가 직접 코드를 내려받아 검증하는 시간을 절약할 수 있어 코드 리뷰

  시간에 대한 부담을 덜고 중요한 코드의 내용에 집중할 수 있게 됨

 

 

Gerrit의 저장소 관리

 - Gerrit은 내부에 프로젝트별로 Git 중앙 저장소를 여러 개 두고 접근을 제어. SSO와 접근 제어를 통해 허용된
   사용자만  중앙 저장소를 읽고 쓸 수 있음
 - 개별 프로젝트의 저장소에 변경 사항을 저장하는 별도의 영역(Pending Changes)을 따로 두어 변경 사항이
   리뷰를 거치도록 함
 - 리뷰를 거친 변경 사항은 중앙 저장소(Authoritative Repository)에 적용 가능
 - 결과적으로 Gerrit의 중앙 저장소는 Git의 중앙 저장소 변경 사항을 임시로 저장하는 영역을 모두 포함하는 넓은 의미로    확대됨
 - Git 저장소에서와는 달리 Developer1과 Developer2, CI Build Server는 최신 소스를 가져올 때만 중앙 저장소
    사용
 - 변경 사항을 적용(push) 할 때는 별고의 영역에 변경 사항으로 저장
 - 리뷰어는 별도로 저장된 변경 사항을 조회해 검토
 - 리뷰가 끝나 변경 내용이 적절하다는 평가를 받으면 최종적으로 소스가 중앙 저장소에 반영됨 

 

 

Gerrit과 개발 흐름

1. 프로젝트 생성

 - 최초에 관리자는 Gerrit 시스템에서 새로운 프로젝트 생성해 저장소 준비

 - 개발자는 기존 프로젝트 마이그레이션 OR 새로운 프로젝트 시작

 - 관리자 혹은 개발자는 프로젝트 내에 새로운 브랜치 생성 후 개발 시작

 

2. 코드 리뷰

 - 개발자가 개발 진행 후 변경 사항을 Gerrit으로 보내면 리뷰 시작

 - Jenkins와 같은 CI 시스템과 연동되어 있을 경우 일차적으로 시스템적인 검증 진행 -> 결과 Gerrit으로 통보

 - 리뷰어가 코드 리뷰 진행 후

        변경사항이 적절하지 않다면 개발자 코드 재작성 후 다시 코드 리뷰

        변경사항이 적절하다면 변경 사항 적용

 

3. 변경사항 반영

 - 코드 리뷰가 완료되면 변경 사항을 배포를 위한 브랜치에 반영

 - 배포 완료 후 팀 내의 브랜치 관리 정책에 따라 브랜치 간 병합이나 태그 붙이기와 같은 정리 작업 실행

 

 

 


 

 

참조
- https://hyperconnect.github.io/2022/02/28/gerrit-code-review-introduction.html
- https://d2.naver.com/helloworld/6033708