GitHub 커밋 메세지에 JIRA 이슈번호 자동으로 넣어주기

Ted Park
PRND
Published in
5 min readSep 27, 2019

항상 앞에 이슈번호를 넣어주어야 하는 귀찮음을 자동으로 넣어주도록 처리하는 방법에 대해 공유합니다.

Jira를 사용하는 회사에서는 대부분 커밋 메세지 앞에 이슈번호를 붙여서 사용합니다.
HDA-1089 어쩌구 저쩌구 , HDA-1096 블라블라

Branch의 이름과 Commit의 이름은 항상 Jira의 이슈번호로 시작합니다.

  • Branch: feature/HDA-123-aaa-bbb
  • Commit: HDA-123 커밋내용

이러한 이슈번호 관리를 통해서 어떤 코드에 대해서 History를 확인했을때
해당 코드가 어떤 피쳐와 이슈로 인해서 수정되었는지 직접 해당 티켓에 가서 확인할 수 있습니다.

참고로 저희회사는 HeyDealer의 줄임말인 HD를 앞에 붙이고 각각 프로젝트에 따라서 이름을 완성합니다.
HDA(안드로이드), HDI(아이폰), HDW(웹), HDS(서버)

너무 귀찮습니다.😩

하지만 커밋 메세지마다 앞에 Jira 이슈번호를 적는 일은 너무 귀찮은 작업입니다.
그래서 커밋메세지에 이슈번호를 누락시키는 경우도 있으며심지어 다른 이슈번호를 적는 경우도 생깁니다.

누가 나대신 이슈번호좀 앞에 적어줘..

이런 귀찮음을 해결해줄 방법을 생각해보았습니다.🤔

Git Hook

이 귀찮음을 해결해줄 녀석은 Git Hook이었습니다.

git hook은 git에서의 특정 상황이 발생할때를 캐치해서 내가 원하는 작업을 할 수 있도록 제공합니다.

이미 파일 이름 자체에 어떤 상황에 해당 스크립트가 실행되는지 나와 있습니다.

  • pre-commit: 커밋하기전에 실행(주로 Lint돌리거나 검증 작업할때 사용)
  • post-commit: 커밋한 뒤에 실행
  • pre-push: 커밋을 remote로 push하기전에 실행
  • 기타 등등

기본으로 확장자가 .sample 로 처리되어 있으며 사용하고 싶은 파일에 스크립트를 작성한뒤에 뒤의 확장자를 제거해주면 됩니다.

여기서 저는 prepare-commit-msg을 사용했습니다.
prepare-commit-msg은 pre-commit과 비슷하지만 커밋메세지를 만들고 나서 실행됩니다.

알고리즘

자동으로 Jira이슈를 넣어주기 위해서는 아래와 같은 흐름으로 동작하도록 설계하였습니다.

  1. feature 브랜치에서 작업할때만 이 작업이 되어야 한다
    : 현재 브랜치가 master, develop, release, hotfix인 경우 skip
  2. 브랜치 이름으로부터 Jira이슈 번호 가져오기
    : feature/HDA-1089-xxxx-yyyy 인경우 HDA-1089를 뽑아오기
  3. 커밋메세지에 이미 Jira이슈번호가 적혀있다면 skip
  4. 위의 경우를 다 검증한뒤, 커밋메세지 앞에 Jira이슈번호를 추가

위 와같은 흐름으로 동작하도록 설계한 prepare-commit-msg입니다.

데모

위의 코드를 적용한경우 커밋메세지에 Jira번호를 적지 않아도 알아서 들어가게 되는것을 확인하실 수 있습니다.

우리 프로젝트에 어떻게 적용해요?

  1. 위의 파일을 다운로드 혹은 코드내용 복사
  2. 9번째줄의 ‘HD.-[0–9]+’` 에서 HD대신 본인의 Jira프로젝트 이름으로 변경
  3. 프로젝트의 .git/hooks/ 에 prepare-commit-msg의 파일이름으로 두기

어때요, 참 쉽죠?

이번 글에서는 prepare-commit-msg만을 활용했지만 다른 git hook을 활용하면 더 효율적이고 편한 개발을 할 수 있습니다.

git hook을 사용해서 개선한 또 다른 사례가 있다면 댓글로 알려주시면 감사하겠습니다.

참고

저희와 함께 헤이딜러 서비스를 발전 시켜나가실 분들을 기다리고 있습니다.
http://bit.ly/prnd-hiring
위의 채용링크로 많은 지원부탁드립니다.

감사합니다.

--

--