협업을 하다보면 Pull Request와 Issue를 사용하게되는데, 처음 협업을 진행했을 때 깃헙 칸반보드를 활용해서 스프린트 방식으로 개발을 하면서 직접 칸반보드에 구현할 기능을 명시하고 issue 탭에서 연결시키고, pr을 올리면서 해당 이슈를 또 연결하고....😂 나중에 보면 칸반에 이슈 번호가 뒤죽박죽 섞여있는 것을 보면서 issue와 pr을 연결하고 자동으로 issue를 닫아주는 방법을 정리해야겠다 생각했었는데, 이번에 새로운 프로젝트가 일정에 잡혀있어서 같이 협업하는 개발자 분과 컨벤션을 정하는 와중에 포스팅을 써보려한다.
issue 생성하기
가장 먼저 issue를 생성해보자. issue를 생성해야하는 해당 레포에 들어가서 issue 탭을 클릭하고 New issue 버튼을 클릭해 이슈를 생성한다.
New issue 버튼을 클릭했으면 생성하고자하는 issue의 제목과 내용을 입력한다. 추가적으로 나는 칸반에도 자동으로 생성되도록 Project 또한 연결했다.
이렇게 위의 과정을 통해 기본적으로 issue를 생성하고 생성된 issue에 issue 번호가 남아있는 것을 확인할 수 있다.
나와 같이 Project와 연결한 경우에는 Project 내부에도 생성한 issue가 있는 것을 확인할 수 있다.
commit 메시지에 issue 번호 등록
생성한 issue에 해당하는 기능 구현 후 커밋 메시지에 issue 번호도 등록을 할 수가 있는데, 커밋 메시지에 issue 번호를 등록하면 자동으로 해당 커밋을 등록한 issue와 연결해준다.
git commit -m "feat : #10/issue 테스트"
issue 번호를 등록한 커밋 메시지를 작성한 뒤, pull Request를 작성하기 위해 기능 구현이 완료된 브랜치를 push 한다.
git push origin feat/#10/issue-test
Pull Request와 issue 연결하기
이제 PR과 issue를 연결하여 PR이 닫히면 자동으로 issue도 닫히게 끔 키워드를 통해 설정해보자.
- close
- closes
- closed
- fix
- fixes
- fixed
- resolve
- resolves
- resolved
issue 키워드는 위와 같이 이루어져 있다. 해당 키워드 + issue 번호와 함께 커밋 메시지를 작성하면 issue가 자동으로 종료된다.
지금 작성하는 포스팅에서는 pr과 issue를 연결하는 내용을 다루고 있기 때문에 커밋 메시지를 통한 issue 종료는 나중에 다뤄보도록 하겠다.
각설하고, PR 내용에 위처럼 이루어져 있는 키워드와 해당 issue 번호를 함께 작성해보면 아래와 같이 연결가능한 issue 목록이 보여진다.
나는 아까 생성한 issue인 #10 issue를 연결했다.
Create pull request를 통해 PR을 생성하고 issue에 PR과 issue가 연결되었다는 문구와 아까 커밋 메시지를 작성할 때 issue 번호도 등록했기 때문에 커밋도 연결된 것을 확인할 수 있다.
Pull Request Merge
해당 기능 구현에 대한 코드리뷰를 진행하고 다음과 같이 Merge를 했다고 가정했을 때 연결된 issue 또한 제대로 닫혀있는지 확인해보자.
PR이 Merge 되고, issue도 자동으로 closed 된 것을 확인할 수 있다. 아까 issue를 생성할 때 Project에 연결했었는데, Project에서도 상태의 변화가 있을까?
project 탭에서도 자동적으로 Done 상태로 이동한 것을 확인할 수 있다.
이렇게 issue와 pr을 자동으로 키워드를 통해 닫아주는 방법을 정리해보았다. pr 내용에 키워드 + issue 번호를 입력하는 방법 뿐만 아니라 커밋 메시지에서도 키워드와 issue 번호를 통해 설정하는 방법도 있는데, 커밋 메시지에 키워드와 번호를 쓰게되면 나중에 지저분해질 것 같아서 별로 선호되는 방식은 아닌것 같다. 물론 개인적인 생각일 뿐 컨벤션에 맞게 사용하면 될 것 같다.
'개발 지식 정리' 카테고리의 다른 글
주소창에 URL을 입력하면 무슨 일이 일어날까? (2) | 2023.09.04 |
---|---|
nextjs에서 recoil 세팅하기 (0) | 2023.05.06 |
외부 이미지 가져오기 (feat. nextjs) (0) | 2023.04.30 |
CORS 그만 마주치자! (0) | 2023.03.19 |
[NextJS] per-page Layout을 사용한 공통 레이아웃 적용 (0) | 2023.03.14 |