Gerrit은 오픈 소스 웹 기반 코드 리뷰 도구로, Git 버전 관리 시스템을 사용하는 프로젝트에서 코드 검토 및 협업을 용이하게 해줍니다. Gerrit은 구글에서 개발되었으며, 안드로이드 오픈 소스 프로젝트(AOSP) 등 여러 대규모 프로젝트에서 사용되고 있습니다.

Gerrit을 사용하려면 Gerrit 서버를 설치하고 구성해야 합니다.
설치 방법은 공식 문서 에서 확인할 수 있습니다.

Gerrit은 웹 기반 코드 커밋 및 버전 관리 도구로, 코드 리뷰를 위한 기능을 제공합니다.
개발자들은 Gerrit을 이용하여 Git 저장소에서 작업한 코드 변경 사항을 리뷰하고, 변경을 승인하거나 거부하고, 수정 요청을 할 수 있습니다.

아래는 Gerrit에서 지원하는 기능에 대한 정보입니다.

  • 코드 리뷰: Gerrit은 팀원들이 코드 변경을 검토하고 피드백을 제공할 수 있는 기능을 제공합니다. 리뷰어들은 변경 사항을 확인하고, 의견을 남기거나 수정 요청을 할 수 있습니다. 리뷰 프로세스가 완료되면 리뷰어는 변경 사항을 승인하거나 거부할 수 있습니다.

  • 패치 세트: Gerrit은 패치 세트라는 개념을 도입하여, 동일한 변경 사항에 대한 여러 버전을 추적할 수 있습니다. 이를 통해 개발자는 피드백을 반영하여 변경 사항을 업데이트하고, 리뷰어가 새로운 패치 세트를 쉽게 검토할 수 있습니다.

  • 브랜치 관리: Gerrit은 Git의 브랜치 관리 기능과 연동되어, 변경 사항이 리뷰를 통과하면 자동으로 브랜치에 병합됩니다. 이를 통해 코드베이스의 안정성이 유지되며, 팀원들이 협업을 효율적으로 진행할 수 있습니다.

  • 통합 지원: Gerrit은 다양한 지속적 통합(CI) 도구와 통합할 수 있어, 코드 변경이 병합되기 전에 테스트 및 빌드가 정상적으로 수행되는지 확인할 수 있습니다.

  • 접근 제어: Gerrit은 사용자 권한을 세분화하여, 프로젝트의 각 부분에 대한 접근 권한을 조절할 수 있습니다. 이를 통해 개발자와 리뷰어가 적절한 권한을 가지고 작업을 진행할 수 있습니다.

Gerrit은 안정적인 코드 리뷰를 보장하며 Git의 다양한 기능과 함께 사용할 수 있습니다.

Gerrit을 통해 코드 리뷰 문화가 제대로 돼 있다면 서로에게 좋은 효과를 줄 것이라 생각합니다.

혼자 진행하는 프로젝트의 경우, Gerrit과 같은 코드 리뷰 도구의 이점은 크지 않습니다.

개인 프로젝트에서는 Git의 기본 기능만으로도 충분히 버전 관리와 코드 추적을 할 수 있습니다. 예를 들어, 브랜치를 생성하여 새로운 기능을 개발하고, 완료되면 메인 브랜치에 병합하는 방식으로 작업할 수 있습니다.

추가 에러 처리 관련

Gerrit을 사용할 때는 반드시 코드 리뷰를 거쳐야만 코드를 변경할 수 있습니다. 먼저 ssh 설정을 완료한 후, commit을 하고 명령어를 입력할 때 change-id가 없으면 에러가 발생할 수 있으니 주의해야 합니다.

1
git push origin HEAD:refs/for/master

그러면 아래와 같은 에러가 발생합니다.

경고

remote: Resolving deltas: 100% (4 / 4)
remote: Processing changes: refs: 1, done
remote: ERROR: commit bd76487: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ~~~
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:

위의 힌트 2개를 그대로 넣으면 change-id가 설정됩니다.

1
2
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ~~~
git commit --amend --no-edit

이 에러 메시지는 Gerrit을 사용하는 git 서버에서 commit message에 Change-Id가 없기 때문에 발생합니다.
Gerrit에서는 Change-Id를 사용하여 각각의 변경 사항에 고유한 ID를 부여하고 이를 사용하여 여러 작업을 관리합니다.

해결 방법으로는 아래의 명령어를 통해 Gerrit에서 제공하는 commit-msg hook을 설치하고 commit message를 다시 작성하여 commit을 다시 시도하면 됩니다