25P by ironlung 2023-06-14 | favorite | 댓글 2개

*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 훅에 넣을 수 있음

commitizen랑 같이 써도 좋읍니다

좋은 툴 감사합니다