개발환경 구축

Git prepare-commit-msg 를 통한 commit convention 정착시키기

뒷골목프로그래머 2023. 4. 26. 11:13
반응형

안녕하세요. 글쓰는 개발자 입니다.

 

 prepare-commit-msg 파일을 생성하여, git commit message convention을 정하고, 이를 준수했을 때만 commit이 가능하게 하는 법을 소개합니다.

 Commit message의 허용되는 Prefix를 정하고 commit 수행 시 message를 검증하고 Convention을 준수하지 않는 경우, 안내 메시지를 출력하는 방법 입니다.

 

 적용 순서는 다음과 같습니다.

  1. .git/hooks 확인, prepare-commit-msg 생성 및 권한 부여
  2. .git/hooks/prepare-commit-msg 작성
  3. commit 수행

------------------------------------------ 2023. 05. 04 추가 --------------------------------------------

- Windows Cmd에서 prepare-commit-msg 생성 추가

 

.git/hooks 확인, prepare-commit-msg 생성 및 권한 부여

 Git 공식문서에 따르면 Git Hooks의 제목은 Customizing Git - Git Hooks 입니다. hook을 잘 활용하면, Git을 customizing 할 수 있고, 그 중 commit 전/후 작업 또한 정의 할 수 있습니다. 원격 Git Repository를 Clone 했거나 직접 git init 명령어를 사용했다면, .git 디렉토리가 생성되어 있을 것 입니다. 아래와 같이 이동하여 목록을 살펴보면 여러 작업을 정의 할 수 있음을 파일 이름만 봐도 알 수 있습니다. 이 파일 중 prepare-commit-msg.sample 을 참고하여, prepare-commit-msg 를 생성하겠습니다. 

 

Mac / Linux

 위의 .git/hooks 하위 파일 목록을 잘 보시면, 방금 생성한 prepare-commit-msg 파일의 권한이  -rw-r--r-- 로 설정되어 있습니다. 따라서, 아래와 같이 실행 권한인 x 를 부여해 정상 동작 할 수 있도록 합니다.

Windows (2023.05.04 추가)

 사내 windows PC 사용 개발자 덕분에 추가되었습니다. 아래 명령어를 통해 prepare-commit-msg 파일을 생성하고 메모장을 열어 script를 복사하고 저장합니다.

 

.git/hooks/prepare-commit-msg 작성

 파일 내용은 아래와 같습니다. 사용자의 git commit -m "Message" 명령어 중 Message를 가져와 이를 정규식으로 검증하고 만족못할 시 commit을 제한 하는 것입니다.

 

commit 수행

 아래와 같이 commit을 수행 합니다. 잘못된 경우로 입력시 아래 그림과 같이 안내 문구가 제대로 표시 됨을 확인 하실수 있습니다.

 

참고

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

 

Git - Git Hooks

If you’re writing a script/hook that others will need to read, prefer the long versions of command-line flags; six months from now you’ll thank us.

git-scm.com

https://dev.to/anibalardid/how-to-check-commit-message-and-branch-name-with-git-hooks-without-any-new-installation-n34

 

How to check commit message and branch name with git hooks without any new installation

Introduction Hi All ! I'm a tech lead, and I'm on charge to check Pull Request/Merge...

dev.to

 

반응형