개요
현재 진행하는 Su-p 프로젝트에서는 코드리뷰를 위해 코드를 바로 올리는 것이 아닌, Issue > Pull Request > Review > Merge 의 순서로 진행하고 있다.
Issue 사용
프로젝트의 Issue 탭이다. 여기서 New Issue 버튼을 통해 새로운 Issue 를 생성할 수 있다.
Issue 사용의 장점
이슈를 사용하면 프로젝트 내에서 발생하는 버그, 개선 사항, 새로운 기능 요청 등을 체계적으로 관리할 수 있다. 또한, 프로젝트의 진행 상황을 효과적으로 모니터링할 수 있다. 구현해야할 기능을 전부 Issue 에 올림으로써 프로젝트 로드맵 수립도 가능하다.
현실적인 문제
하지만 우리 사이드 프로젝트의 특성 상 주에 한번 회의하고, 주말 정도에만 작업이 가능했다. 회의록, 엑셀 기능 흐름도 관리, 기능 개발 일정 등 관리할 문서가 많고, Pull Request 에 review 다는 것만으로도 벅찼다. 아예 기획만 하는 담당자가 있으면 해당 부분을 관리할 수 있겠지만 우리는 이것 말고도 할 것이 많아 Issue 를 프로젝트 관리 용도로 사용하지는 못했다.
해결방법
그리고 Issue 가 너무 많으면 알아보기 어렵고 뭐가 뭔지 까먹게 된다.. 따라서 우리는 회의 결과와 해당 주 역할분배에 따라 본인의 할당량을 본인이 직접 Issue에 올리기로 하였다. 다음 프로젝트에서는 진행도 관리도 할 수 있음 좋을 것 같다.
추가로, Issue 를 더 편하게 사용하기 위한 템플릿 설정 방법은 아래 링크를 타고 들어가 확인할 수 있다.
https://skylarcoding.tistory.com/200
커밋에 issue 연결
깃을 사용하다보니 기능이 아주 많은 것을 알게되었다. 바로 커밋부터 Issue 연결이 가능하다는 것 ! Commit 메세지에 해당 Issue 번호를 '#이슈번호' 로 입력하면 자동으로 연결된다. Issue 번호는 Issue 제목 오른편의 #숫자이다.
연결하고서의 장점은... 다른건 모르겠고 확인 및 관리가 편하다! 아래처럼 해당 Issue 에 대한 로그로 남기 때문이다.
Pull Request (PR) 사용
혼자할때는 문제없지만 여러 사람이 같이 사용하는 경우 main 에 바로 나의 수정사항을 병합하게 되면 문제가 발생한다. 해서, 새로운 branch 로 commit 을 하게 되면 Pull Request 를 생성하라는 안내 메세지가 발생한다.
Pull Request 가 필요한 이유는
각자의 branch 에서 작업한 내용을 main 으로 병합할때 체계적으로 관리할 수 있고, 병합 시 발생할 수 있는 충돌을 사전에 확인하고 해결할 수 있다.
변경 이력을 관리하고 문제 발생 시 원인과 시점을 빠르게 파악할 수 있다. 또한, Pull Request 에서 merge 전의 승인 절차를 강제하면 구성원이 코드 병합에 대한 검토를 진행할 수 있다.
PR 원리
예를 들어, local branch인 studylogs/#141* 을 생성했다고 생각하자. 해당 branch 의 작업물은 아래 과정을 통해 main 에 merge (병합)할 수 있다.
local branch to Main 과정
local branch (내 local 환경에서 생성한 브랜치) > remote branch (git 에 올라간 branch) > pull request 생성 > (PR review) > merge > main branch 로 병합이 진행된다.
* 이때, studylogs/#141은 studylogs 폴더 밑에 #141 브랜치를 생성했다는 의미이다. 인텔리제이에서 확인할 때 studylogs 폴더가 생성되어 브랜치를 구분하기 쉬워 사용하고 있다. 바로 #141로 생성해줘도 된다.
차근차근 확인해보도록 하겠다.
Pull Request를 통한 merge 과정
1. local branch > remote branch
로컬에서 git 서버로 Commit & Push 을 통해 진행한다.
2. remote branch > main 으로 올리기 위한 pull request 생성
아래 사진은 studylogs/#141 브랜치의 내용을 main 으로 공유한다는 의미이다.
3. Pull Request 리뷰
PR 세부화면의 우측에서 리뷰를 요청할 리뷰어를 설정할 수 있다.
리뷰어를 선택하면 오른쪽 캡처과 같이 나타난다. 리뷰 대기중이라는 의미이다.
왼쪽 캡처는 변경요청, 오른쪽은 리뷰 완료이다.
변경요청한 리뷰어에게 재요청을 하려면 Re-request review 를 선택하면 된다. 해당 부분을 선택해야 모바일에서는 리뷰가 용이하기 때문에 해주면 좋다.
review 없이 merger 금지 설정하기
https://skylarcoding.tistory.com/220
리뷰 금지 설정 시 아래와 같은 머지 금지가 나타난다.
리뷰 조건 완성 시 다음과 같은 화면이 나타나 머지를 진행하면 된다.
별다른 충돌이 없는 이상 merge 를 진행하면 해당 브랜치를 병합하면 된다.