코드 리뷰와 이슈 추적을 위해서는 커밋 메시지에 Jira 이슈 번호를 작성해야 합니다. 하지만 매번 수동으로 이슈 번호를 입력하다가 실수를 하기도 하였습니다. Husky와 jira-prepare-commit-msg를 사용하면 브랜치에 있는 이슈 이름을 자동으로 커밋 메시지에 작성되게끔 할 수 있습니다.
패키지 설치
npm install husky jira-prepare-commit-msg --save-dev
# Husky 초기화
npx husky init
설정하기
1. package.json 수정
"jira-prepare-commit-msg": {
"jiraTicketPattern": "([A-Z0-9]+-\\d+)",
"allowEmptyCommitMessage": false,
"ignoredBranchesPattern": "^(master|main|dev|develop|development|release)$",
"ignoreBranchesMissingTickets": false
}
jira-prepare-commit-msg
가 JIRA이슈 번호를 검색할 수 있도록 package.json
에 위와 같은 내용을 추가했습니다.
jiraTicketPattern
가 브랜치 이름에서 JIRA 이슈 번호를 추출하는 정규식 규칙입니다. 각자 상황에 맞춰 변경해 사용하시면 됩니다. 필자의 경우 브랜치 이름을 다음과 같이 작성합니다.
- 브랜치 이름 :
(AIR23-12) Auth
- 정규식 통과 후 :
AIR23-12
master, main, dev, develop등 JIRA 이슈 번호가 필요 없는 브랜치는 ignoreBranchesPattern
에 작성했습니다.
2. Husky 훅 생성
- 프로젝트 폴더에
.husky
폴더가 생성되어 있는지 확인합니다. 없다면npx husky init
을 다시 실행해 주세요. - 해당 폴더에
prepare-commit-msg
라는 이름의 파일을 생성합니다. - 내용을 아래와 같이 작성합니다.
npx jira-prepare-commit-msg $1
사용방법
설정을 마쳤다면, 새 브랜치를 정규식 규칙에 맞게 이슈 번호를 포함해 생성한 후, 테스트 커밋을 작성해 보세요.
커밋을 마친 후 git log
를 확인했을 때 이슈 번호가 추가되었다면 Hook이 제대로 설정된 겁니다.

번외) 커밋 전 타입 체크
Hook을 이용하면 깃 동작 전/후로 여러 추가 동작을 수행하게 만들 수 있다. 필자는 타입스크립트에서 타입을 대충 쓰다가 빌드 직전 하루 종일 타입만 고치러 다닌 기억이 있다. 이런 사고를 미연에 방지하기 위해 커밋 전 항상 타입 체크를 통과해야 하도록 만들어보자.
.husky
폴더 내에pre-commit
파일을 추가한다.- 프로젝트에서 사용하는 테스트 실행 명령을 작성한다.
npm run check
이제 커밋하기 전 타입 체크에 실패하면 커밋을 할 수 없다. 물론 잠시 hook을 비활성화 하고 커밋할 수 있지만, 그럴 경우 Pull request 유효성 검사에서 실패해 결국 develop이나 main 브랜치로는 불완전한 코드가 갈 수 없다.
답글 남기기