지금까지 회사업무로 인해 issue 관리 툴로 atlassian의 jira를 사용해 왔다. 팀원들간 개발내역 및 내가 하고 있는 일을 쉽게 공유 할 수 있기때문에 협업 프로젝트를 하면서 꼭 필요한 툴이라고 생각한다.
하지만 큰 프로젝트가 아닌 작은 프로젝트를 하는데 과연 다른 사이트에 회원가입 및 스페이스를 따로 열면서 까지 해당 툴로 이슈 관리를 해야할 필요가 있을지 의문을 가지게 되었다.
마침 깃으로도 이슈관리를 할 수 있다는 사실을 알았고 깃을 이용한다면 Repository 를 여는 순간 이슈관리 스페이스를 따로 생성할 필요가 없고 별도의 회원가입 및 프로젝트 팀원의 권한관리를 할 필요가 없다는 점에서 작은 프로젝트를 하기엔 jira보다 편할것이라고 생각했다.
그럼 깃으로 프로젝트를 관리하는 방법을 평소 하나의 이슈가 발급되고 닫힐때 까지 과정을 바탕으로 순서대로 알아보도록 하자.
1. 이슈 발급
- 이슈 탭 활성화 및 이슈 템플릿(양식) 생성
먼저 이슈를 발급하기 위해서는 먼저 깃에 이슈 발급 환경을 구성해야한다.
세팅에 들어가서 이슈 탭 활성화 및 템플릿을 설정하도록한다.
여기서 추가되는 템플릿은 나중에 이슈 생성 시 등록 양식으로 사용할 수 있다.
Bug report와 Feature request 템플릿은 깃에서 제공하는 템플릿이고
Custom issue template은 사용자가 직접 작성한 양식을 지정할 수 있는 템플릿이다.
- 이슈 발급
이슈 발급은 다음과 같이 하면된다.
이후 위에서 지정한 추가한 템플릿을 선택 후 이슈 내용을 작성하여 이슈를 발급하면된다.
2. 이슈 관리
이슈를 열었으면 이제 이슈를 관리할 수 있어야한다.
이슈 관리의 핵심 요소는 크게 다음과 같다.
- Asignee : 이슈 해결을 전담 받은 사람
- Labels : 이슈 카테고리 (ex, bug, new feature, question
- Status : 이슈의 상태 (ToDo, In Progess, Done)
먼저 Asignee와 Label은 이슈 생성단계 및 Issue 설정 정보에서 등록/수정 가능하다.
Status 관리를 위해서는 Project(jira에서는 Epic에 해당) 등록을 한다. Project는 Jira에 Epic 해당한다고 보면 좋다. Jira의 Epic은 task(issue) 의 모음이다.
각 이슈는 Project에 등록을 할 것이며 각 이슈의 status 또한 Project 내에서 관리하게 될 것이다.
git Repository안에 프로젝트를 생성한다
생성된 Project내에 Add column 버튼을 사용하여 Project내 등록된 이슈의 관리 방식(Status)을 정의한다. 일반적으로는 Todo, In Progress, Done의 3단계 형식으로 관리한다.
이 때 내가 Project에 등록한 Issue의 status를 Isuue 또는 Pull Request가 Open됐는지 Close 됐는지에 따라 자동으로 바꿀 수 있게 지정할 수 있다. 이 기능을 깃에서는 Manage automation이라 부른다.
이제 다시 Issue 돌아와 새로 생성된 Project에 해당 Issue를 등록하도록 한다. 만약 Issue를 새로 생성할 단계라면 생성 화면에서 Project에 할당할 수 있다.
만약 해당 이슈에 대한 개발을 바로 시작할 것이라면 Project의 Isuue Status Dropdown을 눌러 해당 이슈의 status를 IN PROGRESS로 바꿔주면 된다. 그렇지 않다면 TO DO에 넣으면 된다.
3. Pull Request
특정 이슈의 Asignee가 개발을 끝낸 후 Repository에 해당 이슈에 대한 commit을 push 한후 Pull request가 발생했다.
깃에서는 Jira에서와 마찬가지로 이 Pull Request 또한 이슈와 연동할 수 있다.
Jira는 commit 메시지의 제목을 읽어 자동으로 연동해주는 반면 깃은 commit message의 제목을 읽지않고 subMessage를 읽어 해당 연동작업을 할 수 있다.
PullRequest와 Issue의 연동을 위한 Commit subMessage의 구성은 기본적으로 다음과같다.
● [keyword]: #[이슈번호]
[keyword]는 Pull request의 특정 액션에 따라 Issue를 처리할 방식을 결정할 메시지고,
[이슈번호]는 해당 Pull Request와 연동하고자하는 이슈번호다.
이렇게 commit message로 연동한 이슈는 연동된 Pull Request를 merge할 때 자동으로 close 된다.
해당 Pull Request가 어떤 성격을 지녔는가에 따라 다르게 keyword를 선택하면된다. (보통의 기능 추가라면 keyword 로 resolves를 사용하고 이미 만든 기능의 버그 수정이라면 fix를 사용하면된다.)
keyword의 종류는 다음과 같다.
- close
- closes
- closed
- fix
- fixes
- fixed
- resolve
- resolves
- resolved
'Git' 카테고리의 다른 글
version tag 원칙 (0) | 2021.03.28 |
---|---|
cherry-pick 필요 상황 및 사용법 (2) | 2020.12.29 |