[OpenSource] Gerrit에서 코드 기여 해보기
카테고리:
tag #
2024년 11월 13일
// Links to the libraries needed
저는 이전 OpenSource Contribution Academy 체험형을 하고나서 운이 좋게도 최근 OpenSource Contribution Academy 참가형 프로젝트에 참여할 수 있었습니다!
프로젝트는 ORAN Software Community AI/ML Framework였습니다!
해당 프로젝트는 Github가 아닌 Gerrit이라는 협업 툴을 사용하였고 Gerrit에 Merge가 되면 Github가 Mirrored되는 방식으로 Github에도 코드가 같이 올라갔습니다.
Gerrit에서 오픈소스 기여 활동을 하며 Github와는 방식이 많이 다른 것을 느꼈는데요!
Gerrit에서 코드를 커밋하고 수정하는 방법을 포스팅해보겠습니다.
sudo apt-get install git
sudo apt-get install git-review
git config --global user.email "eamil@gmail.com"
git config --global user.name "name"
이메일은 Gerrit 가입 이메일과 동일해야 합니다.
# 1) SSH 키 생성(이미 있으면 생략)
ssh-keygen -t rsa -C "email@gmail.com"
# Generating public/private rsa key pair.
# Enter file in which to save the key (/.ssh/id_rsa):
# Enter passphrase (empty for no passphrase):
# Enter same passphrase again:
# Your identification has been saved in /tmp/testkey
# Your public key has been saved in /tmp/testkey.pub
# The key fingerprint is:
# ...
# +---[RSA 3072]----+
# | |
# ...
# | ..=.+++=.+|
# | .o. . **+=|
# +----[SHA256]-----+
# 2) 비밀키 등록
eval $(ssh-agent)
ssh-add /.ssh/id_rsa
# 3) 공개키 확인
cat ~/.ssh/id_rsa.pub
# 4) Gerrit 웹 → Settings → SSH Keys → Add... 에 위 공개키 붙여넣기
# 4) 접속 테스트 (호스트/포트는 인스턴스마다 다름, 예시는 ORAN)
ssh -p 29418 <Username>@gerrit.o-ran-sc.org
BROWSE - Repositories에서 원하는 Repository 선택
Clone with commit-msg hook으로 써져 있는 주소 복사 그냥 Clone을 하면 git commit 시 Commit-Id가 자동으로 생기지 않는다. Gerrit의 많은 프로젝트는 Commit-Id가 없으면 push가 되지 않는다.
제가 현재 하고 있는 ORAN 프로젝트는 브랜치 관리를 따로 안하고 모두가 main 브랜치에 기여를 하는 방식이었습니다.
# 1) 프로젝트 연결 확인
cd /Project/Repository
git review -s
# 2) 작업 파일 수정
git status
git add <수정한_파일들>
# 3) 서명 옵션 추가 : -s = Signed-off-by 추가 -> 여기서는 커밋 메시지 작성 X
git commit -s
# 4) 커밋 메시지 작성
git commit --amend
# 5) Commit Message, Author, Commit-Id, Change-Id 등 확인
git log
# 6) 코드 올리기
git review
Change-Id는 예를 들어, Change-Id: abc123 형식으로 메시지 맨 아래에 들어갑니다.
리뷰 코멘트가 달리면 같은 Change-Id를 유지한 채 메시지만/코드만 고쳐 패치셋을 올립니다.
# 1) 수정한 파일 확인 및 추가
git status
git add <수정한_파일들>
git status
# 2) 기존 커밋 수정 (Change-Id는 건드리면 안됨)
git commit --amend
# 3) Change-Id 확인, Commit-Id는 달라지는 것이 맞음
git log
# 4) 코드 올리기
git review
Gerrit에는 신기한 시스템이 있었습니다.
프로젝트마다 다르긴 한데 점수에 따라 코드가 승인되는 시스템이 있었는데요.
프로젝트마다 라벨 구성과 통과 기준이 다른데 보통 다음의 기준이 많이 쓰이는 것 같았습니다!!
최소 요구치는 Code-Review +2 그리고 Verified +1인 경우가 많은 것 같았구요. 추가 요구치는 Maintainer/Workflow +1 또는 Owners-Approval +1 이런 것도 있는 것 같았습니다!
보통 이런 식으로 나옵니다!

Change 화면 우측의 Labels 섹션에서 필수 라벨과 남은 조건을 확인할 수 있습니다!
오늘은 Gerrit에서 오픈소스 기여하는 방법에 대해 포스팅하였는데요!!
다음에는 제가 기여한 내용에 대해 포스팅해보겠습니다.
감사합니다!!