지금까지 서버에서 Gerrit 을 설치하고 설정하는 방법에 대해 알아보았다.
이제 서버의 Gerrit project 를 로컬에서 clone 해서 작업하고 코드리뷰 받는 방법에 대해 알아 보도록 하자.
1. Gerrit repository 에서 clone
앞서 잠깐 언급했듯이 clone with commit-msg hook 으로 작업 시작
2. Local working directory 에서 clone 실행
3. 필요한 작업을 하고 commit
여기까지는 내 로컬 PC 에서의 작업이다.
즉, 내 로컬 PC의 git 저장소에 내 수정사항을 반영한 상황이다.
이제 이 로컬에 반영된 사항을 gerrit 서버로 등록해야 한다.
4. 서버에 push
원격 저장소에 수정사항을 반영하는것은 push 명령을 통해 이루어 진다.
일반적인 git 원격저장소로의 반영은 git push origin 을 통해서 이루어진다. (물론 origin 에 대한 사전 작업은 되어있다는 가정)
그러나 gerrit 은 gerrit 의 원격 저장소에 수정사항이 저장되기 전에 팀원들로부터 코드 리뷰를 받아야 한다.
따라서 바로 원격 저장소로 push 하는게 아니라 리뷰를 위한 전용 공간으로 push 를 해서 리뷰를 받은 후에 원격 저장소로 merge 되게 된다.
리뷰를 위한 전용 공간에 대한 참조가 바로 refs/for 라는 특별한 참조다.
① 개발자1 이 로컬에서 작업을 마친후 git push 명령을 통해 코드 리뷰를 등록한다.
② 이 push 는 실제로는 git 저장소의 refs/for 라는 참조로 저장이 된다.
③ 이 refs/for 참조가 업데이트 되면 review.aribio.net 에 리뷰가 등록된다.
④ 코드 리뷰를 거친 후 최종적으로 실제 저장소 refs 에 저장된다.
즉, 개발자는 refs/for 에 업데이트를 하게되고, 최종적으로는 gerrit 이 저장소 메인 refs 에 merge 하게 되는 구조인 것이다.
git 은 커밋, branch, tags 등에 대해 모두 참조(refs) 로 관리한다. ex>
|
리뷰를 위한 전용 참조인 refs/for 뒤에 브랜치 이름을 적어줌으로써 리뷰 브랜치를 완성하게 된다.
git push oriign HEAD:refs/for/[브랜치명]
성공적으로 게릿 리뷰 공간에 push 가 되었다.
이제 게릿 웹페이지로 가보자
위에서 push 한 리뷰가 Outgoing reviews 카테고리에 잘 들어가 있다.
5. 리뷰어 지정
내 수정사항을 게릿에 잘 올려놨으니, 이제 리뷰어들로부터 리뷰를 받아야 한다.
해당 리뷰를 클릭하고 들어가면 Reviewer 옆에 연필 아이콘이 있다.
클릭해서 들어가면 addReviewer 를 할수 있고 거기서 이메일이나 이름으로 검색해서 넣고 오른쪽 하단에 SEND 버튼을 누르면 된다.
앞으로 돌아와보면 지정한 리뷰어들이 잘 들어가 있다.
6. 리뷰 시작!!
저렇게 지정하면 리뷰어들한테 메일이 간다.
리뷰어들은 자신의 계정으로 접속하면 Your Turn, Incoming reviews 카테고리에 요청된 리뷰가 들어와있다.
이제 니 차례니 니가 일하라는 의미다.
리뷰 의견을 마음껏 적고 저장한다.
※ 주의!!!!> 여기까지만 하면 리뷰이(Reviewee) 에게 메일이 가지 않는다.
다시 리뷰 홈으로 돌아와서 Reply 단계까지 해줘야 한다.
Reply 시에는 점수를 줘야 한다.
리뷰 의견이 있을때에는 -1 점을 주어 Reviewee 가 확인할게 있다는것을 알려줘야 한다.
여기서 -1점은 마이너스 점수를 의미하지는 않는다. 뭔가 좀 더 확인이 필요한 사항이 있음을 의미한다.
이제 다시 Reviewee 로 돌아오자.
Reviewee 는 자신의 계정으로 게릿에 접속하면 이제 다시 내가 할일이 있다는것을 알 수 있다.
해당 리뷰를 클릭해서 확인하고 커멘트를 달아서 Reviewer 에게 의사를 표시한다.
여기서 Reviewer 가 지적질 했을때 동의한다면
- 로컬에서 수정하고
- git commit --amend 를 통해 해당 커밋을 수정하고
- git push origin HEAD:refs/for/main 으로 리뷰 재등록
을 하면 위에 4번 단계부터 다시 시작하게 된다. 그럼 다시 리뷰어가 보고서 확인한다.
만약 동의하지 않는다면 해당 리뷰에 reply 로 답장을 달아서 SEND 를 하여 리뷰어에게 전쟁의 서막을 알린다.
수정하든 안하든 Reviewer가 이제 마지막으로 인정을 하게 되면 +1 점을 주어 리뷰를 마친다.
비로소 +1점을 받았다.
이제 +2 점을 받아야 한다.
점수에 대한 부분은 별도 페이지에서 한다.
여튼 이제 최종 결정권자가 2점을 주고 CI tool 이 verified 까지 주면 (이 verified 부분은 jenkins 연동 부분에서 자세히 설명하겠다)
[CR(Code Review), V(verified) 가 모두 녹색 체크가 되면] 이제 비로소 서버에 merge를 할 수가 있다.
merge conflict, base 변경등의 오류가 없다면 [SUBMIT] 버튼이 생기게 되고 클릭하면 이제 드디어 서버에 내 수정사항 하나가 추가된것이다.
멀고 먼 길을 넘어와서 드디어 코드리뷰라는 workflow 로 일을 하게 되었다.
코드 리뷰 에서 하고 싶었던 Fig.2 의 녹색 리뷰 추가 단계를 드디어 할 수 있게 되었다.
'Gerrit > Gerrit 일반' 카테고리의 다른 글
1. SW 단상 (코드 리뷰) (0) | 2023.10.17 |
---|---|
2. Gerrit 이란? (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 |