저번 포스팅에서 어떻게 Organization을 만드는지와 협업 프로세스가 어떻게 이루어지는지에 대해 다루었습니다. 이번 포스팅에선 이에 대한 실습을 진행해보도록 하겠습니다.
물론 5번의 내용만 제대로 이해할 수 있으시면 됩니다. 다만, 이슈와 pull request를 어떻게 작성하는지에 대해 제대로 이해해야만, 이슈와 pull request를 연동할 수 있으니, 길더라도 모든 내용을 읽어봐주시면 감사하겠습니다.
Organization에 코드를 업로드하는 방법은 여러가지가 있을 수 있겠으나, 여기서는 개인 Repository를 Organization으로 옮기는 방법에 대해 소개하겠다. 그 이유는 코드를 작성하자마자 Organization에 올리는 경우나, 기존 코드를 Organization으로 옮기는 경우에 모두 사용할 수 있기 때문이다.
① 코드를 개인 Repository에 업로드한다.
② Repository에 들어가 Settings > General > Danger Zone > Transfer를 클릭한다.
③ 아래와 같이 Repository를 옮길 Organization을 선택하고, Repository name을 정해준다. I understand, transfer this repository 버튼을 클릭한다.
④ 이제 Organization에서 본인의 Repository를 확인할 수 있다. 참고로 원래 있던 개인 Repository는 없어진다.
① 저번 포스팅에서 이야기한 방법대로 Organization Repository에서 Issue Template을 만든다.
>> 저번 포스팅
② Organization Repository에서 Fork한다. 자세한 방법은 아래의 링크를 참조하기 바란다.
>> 저번 포스팅
③ 인텔리제이에서 File > New > Project from Version Control로 방금 Fork한 내 개인 Repository 파일을 연다.
④ 코드를 수정한다.
⑤ commit을 실행한 후 Fork된 본인의 개인 Repositroy로 수정한 코드를 push 한다.
⑥ Fork 된 Repository에서 아래와 같이 파란색 글씨로 적힌 1 commit ahead를 클릭한다.
⑦ Create pull request 버튼을 클릭한다.
⑧ 원하는 메시지를 입력한 후 Create pull request를 클릭한다.
⑨ 본인의 코드를 review 해줄 팀원 또는 팀장을 고르고 Assignees에 본인을 선택한다.
⑩ 지금은 코드 상의 충돌이 전혀 없기 때문에 별도의 검토 과정 없이 Merge pull request가 가능하다.
⑪ Confirm merge를 누르면 변경사항이 적용된다.
⑫ Organization Repository에서 변경사항이 적용되었음을 확인할 수 있다. 이 때, 팀원은 push하기 전에 먼저 pull 하여 최근 코드로 동기화한 후 push를 진행해야 한다.
① main 브랜치의 아래의 포스팅대로 보호 규칙을 적용한다.
>> 저번 포스팅
② 이제 누군가 review 하지 않으면 임의대로 merge할 수 없게 된다.
③ 팀장은 임의로 merge할 수 있도록 설정하고 싶다면, 아래의 설정을 체크 해제해주면 된다.
① Organization에서 Repository > issue 탭 > New issue > Get started 버튼을 눌러 Issue를 작성할 수 있다.
② 위 사진을 보면 #number 형식이 보이는데, 이는 auto-increment 값이다. 이 #number는 commit이나 PR에 사용되는 식별자의 역할을 수행한다.
① Issue의 Title은 각 팀에서 정한 규칙에 따라 작성한다.
② Assignees에 나를 선택하고, Labels는 Enhancement를 선택한다. Submit new issue를 클릭한다.
③ 생성된 Issue는 Issue 탭에서 확인할 수 있다.
④ 인텔리제이에서 내 개인 Repository에 fork된 파일을 열고, ctrl + shift + a를 눌러준 후 Open Task를 클릭한다.
⑤ 깃허브와 연동되어 있다면 Task를 자동으로 찾아준다.
⑥ 만약 Task를 인텔리제이가 찾지 못할 경우, ctrl + shift + a로 다시 검색창을 열어 Tasks를 찾아 클릭한다.
⑦ Tools > Servers에 들어가 + 표시를 클릭한다.
⑧ Github 버튼을 클릭한다.
⑨ Organization 이름과, Repository의 이름을 입력하고, 깃허브 토큰을 입력한다. (깃허브 토큰이 무엇인지 모른다면 아래의 게시글을 참고하라.) Test를 눌러 Connection is successful이 잘 나오는지 확인한다.
>> 저번 포스팅
⑩ 다시 Open Task로 들어가 내가 작성한 이슈를 클릭한다.
⑪ 기본 값을 유지한 채 OK를 바로 눌러준다.
⑫ 화면 좌측 하단에 아래와 같은 메시지가 나온다. 이는 브랜치가 생성되었음을 알려준다. 이제 이 브랜치를 이용해서 commit 및 push하면 된다.
① 용도에 맞게 코드를 작성하거나 수정한다. commit 메시지와 push하는 브랜치의 이름 모두 생성한 이슈의 이름으로 자동으로 설정되기 때문에 이대로 commit 및 push하면 된다. (여기서 origin은 fork한 나의 개인레포지토리로 remote되어 있다.)
② 내 개인 Repository로 들어가서 Compare & pull request 버튼을 클릭한다.
③ 제목은 그대로 두고, 아래와 같이 Resolved #을 입력한 후 본인의 issue를 선택하면 된다. Reviewers를 고르고, Assignees에 본인을 선택한 다음 Create pull request를 클릭한다.
※ Resolved 키워드
Pull Request를 작성하는 메세지에서 지원되는 키워드를 사용하여 issue를 연결할 수 있다. 종료 키워드는 close, resolve, fix 등 여러 종류가 있으나 기능 상의 차이는 전혀 없기 때문에 아무거나 골라써도 된다. 다만 여기서는 Resolved 키워드로 issue를 연결하였다. 키워드로 issue를 연결할 경우, PR이 merge되었을 때, issue는 자동으로 종료된다. (키워드 없이 issue 번호만 작성할 경우, issue는 종료되지 않는다.)
④ 생성한 PR에는 #8이 달린다. 즉, issue와 PR이 새롭게 생성될 때마다 #number가 증가한다. 그리고 Resolved 옆에 파란색글씨의 #7은 이슈에 대한 Auto-Link로, 클릭하여 어떤 이슈와 연관된 PR인지 확인할 수 있다.
⑤ 팀원의 review가 정상적으로 마치고 merge가 완료되면, 이슈는 자동으로 close된다. merge가 완료되면 옆에 보이는 Delete branch를 눌러 브랜치도 삭제하는 것이 일반적이다.
⑥ 이슈 history는 이슈가 재발했을 때 관련 정보를 추가하거나, 개발 상태를 추적하는 데에 매우 유용할 수 있다. 이슈 history는 issue 탭에서 open과 close 등 여러 기준으로 필터링하여 목록으로 확인할 수 있다.