728x90

지금까지 회사업무로 인해 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 설정 정보에서 등록/수정 가능하다.

Asignee & Labels 등록 

 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 Status 정의

이제 다시 Issue 돌아와 새로 생성된 Project에 해당 Issue를 등록하도록 한다. 만약 Issue를 새로 생성할 단계라면 생성 화면에서 Project에 할당할 수 있다. 

 

만약 해당 이슈에 대한 개발을 바로 시작할 것이라면 Project의 Isuue Status Dropdown을 눌러 해당 이슈의 status를 IN PROGRESS로 바꿔주면 된다. 그렇지 않다면 TO DO에 넣으면 된다. 

Project 등록 및 이슈 status 등록

 

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

+ Recent posts