지난 포스팅에서는 ‘커밋 메시지가 무엇이며 인포그랩은 어떤 커밋 컨벤션을 사용하는지’ 알아보았습니다. 이모지를 쓰고 이슈 번호도 넣은 커밋 메시지는 추적하기 쉽고, 보기에 좋습니다. 하지만 커밋 메시지가 길고 복잡할수록 매번 불편하고 실수도 잦아집니다.
이번 포스팅에서는 좋은 커밋 메시지를 강제하고, 자동화하는 방법을 알아봅니다. 아울러 인포그랩 프로덕트 팀의 커밋 메시지 자동화 방법도 소개하겠습니다.
인포그랩에서 실제 사용 중인 커밋 컨벤션 관련 예제는 여기서 찾아보실 수 있습니다.
커밋 메시지를 적을 때 무엇이 불편한가요?
✨ Feat(페이지 경로 또는 컴포넌트): 새로운 기능 추가 또는 기능 업데이트
🔨 Fix(페이지 경로 또는 컴포넌트): 버그 또는 에러 수정
⭐️ Style(페이지 경로 또는 컴포넌트): 코드 포맷팅, 코드 오타, 함수명 수정 등 스타일 수정
🧠 Refactor(페이지 경로 또는 컴포넌트): 코드 리팩토링(똑같은 기능인데 코드만 개선)
📁 File(페이지 경로 또는 컴포넌트): 파일 이동 또는 제거, 파일명 변경
🎨 Design(페이지 경로 또는 컴포넌트): 디자인, 문장 수정
🏷 Comment(페이지 경로 또는 컴포넌트): 주석 수정 및 삭제
🍎 Chore: 빌드 수정, 패키지 추가, 환경변수 설정
📝 Docs: 문서 수정, 블로그 포스트 추가
🔥 Hotfix: 핫픽스 수정
인포그랩 프로덕트 팀의 커밋 컨벤션을 다시 살펴봅시다. 저희는 이모지를 사용해 보기 좋은 커밋 메시지를 만드는데요. 하지만 매번 적절한 이모지를 찾는 일은 고역입니다. 시간이 오래 걸리고 실수할 가능성도 커집니다. 또 커밋 메시지의 타입(Feat, Fix, …)을 꼭 대문자로 시작해야 하는데요. 이것을 지키기가 쉬운 일은 아닙니다.
그래서 이런 규칙 준수 여부를 자동으로 감지하고 ‘틀렸다’는 것을 알려주는 방법을 찾아 보았습니다.
어떻게 커밋 메시지를 강제할 수 있을까요?
커밋 컨벤션 준수 여부를 자동 감지하는 방법을 말하기에 앞서 짚고 갈 기능이 있습니다. 바로 ‘Git Hooks’입니다. Git Hooks는 Git 관련 이벤트가 발생했을 때 우리가 정한 스크립트를 실행하는 기능입니다. 이 기능은 서버 훅과 클라이언트 훅으로 나뉩니다. 서버 훅은 Git 서버에서 동작하고, 클라이언트 훅은 Git 커맨드를 입력하는 컴퓨터에서 동작합니다.
Git Hooks를 사용하면 두 가지 방법으로 커밋 메시지를 강제할 수 있습니다.