Git 커밋 메시지 자동화 방법
(insight.infograb.net)*git 커밋 메시지 작성하며 곤혹스러울 때
- 이모지를 쓰고 이슈 번호도 넣은 커밋 메시지는 추적하기 쉽고, 보기 좋음
- But 커밋 메시지가 길고 복잡할수록 매번 불편하고 실수도 잦음
- 매번 적절한 이모지를 찾는 일은 고역
*Git Hooks로 git 커밋 메시지 강제하기
- Git Hooks는 Git 관련 이벤트가 발생했을 때 우리가 정한 스크립트를 실행하는 기능
- 이 기능은 서버 훅과 클라이언트 훅으로 나뉨
*서버 훅: Git의 push rule 기능 사용하기
- pre-receive 훅에 커밋 메시지를 검사하는 스크립트를 넣으면 서버에 푸시되지 않도록 함
- GitLab에서는 push rule 기능을 사용해 정규 표현식으로 커밋 메시지를 검사 가능
- 정규 표현식을 위배하는 커밋 메시지를 감지하면 해당 푸시를 거부하고 오류를 일으킴
*클라이언트 훅: 푸시하기 전 미리 검사하기
- 커밋을 최종 완료하기 전인 commit-msg 훅에 스크립트를 만들어 커밋 메시지 검사 가능
- 커밋 메시지를 수정하고 싶다면 prepare-commit-msg 훅에 관련 스크립트 작성
*인포그랩의 커밋 메시지 자동화 방법
- Husky와 Commitlint를 사용해 커밋 메시지 자동화 체계 만듦
- Husky는 Git Hooks 관리를 돕는 npm 모듈. .husky 디렉터리 아래에 스크립트를 담은 훅 파일을 만듦. 그 다음, npx husky install 명령을 입력하면 해당 스크립트가 git에 등록
- commitlint는 커밋 컨벤션을 쉽게 관리하고 커밋 메시지를 검사하는 도구. 팀에서 정한 커밋 컨벤션을 JSON 형식으로 작성. 그러면 commitlint 명령을 사용해 메시지를 검사
1)커밋 컨벤션을 commitlint 형식으로 정의
- 커밋 메시지의 기본 틀을 기준으로 commitlint.config.ts 파일에 각 팀에 맞는 속성 정의
2)Husky에 commitlint 등록
- commit-msg 훅에 commitlint 명령 등록. .husky/commit-msg 파일에 스크립트 넣음
3)자동화 추가
- 이모지를 붙이거나 이슈 번호를 삽입하는 작업 자동화
- 인포그랩 프로덕트 팀에서는 타입(feat, fix)만 입력하면 이모지를 자동 추가, 타입의 첫 글자만 대문자로 자동 수정, 브랜치에 이슈 번호가 있으면 footer에 이슈 번호 자동으로 붙이기 설정함
- 자동화 스크립트는 prepare-commit-msg 훅에 넣을 수 있음