git hooks(커밋 메시지에 이슈 번호 자동 입력)와 husky 충돌 개선

2023.07.04 - [코딩/공부] - 깃 커밋 메시지에 이슈 번호를 자동으로 입력할 순 없을까?
깃 커밋 메시지에 이슈 번호를 자동으로 입력할 순 없을까?
프로젝트 브랜치명 컨벤션이 feat/이슈번호여서, 브랜치명에서 이슈번호만 가져온 다음 커밋할 때마다 커밋 메시지 아래단(footer)에 이슈 번호를 자동으로 입력해주고 싶었다. 자동으로 입력된다
feb-dain.tistory.com
2023.07.19 - [기록/프로젝트 카페인] - husky로 prettier, eslint 적용 자동화하기
husky로 prettier, eslint 적용 자동화하기
가끔 팀원 중 한 명이 prettier 적용을 하지 않고 push하는 일이 있었다. 그래서 이런 실수를 아예 방지하기 위해 husky를 이용해 prettier, eslint 적용을 자동화하기로 했다. 1) husky 설치 yarn add -D husky // o
feb-dain.tistory.com
git hooks를 이용해 커밋 메시지에 이슈 번호가 자동으로 입력되도록 설정했는데, husky를 사용하면서 적용 안 되는 문제가 발생했다. husky가 git hook을 이용해 원하는 동작을 하도록 도와주는 라이브러리라 그런 것 같다.
해결 방법은 간단하다. (알아내는 과정은 절대 간단하지 않았지만...)
.githooks 파일에서 사용하고 있던 commit-msg 파일을 .husky 폴더에 옮겨주거나 추가해 주면 된다.
#!/bin/bash
COMMIT_MESSAGE_FILE_PATH=$1
MESSAGE=$(cat "$COMMIT_MESSAGE_FILE_PATH")
if [[ $(head -1 "$COMMIT_MESSAGE_FILE_PATH") == '' ]]; then
exit 0
fi
POSTFIX=$(git branch | grep '\*' | sed 's/* //' | sed 's/^.*\///' | sed 's/^\([^-]*-[^-]*\).*/\1/')
COMMIT_SOURCE=$2
CURRENT_BRANCH=$(git branch --show-current)
if [[ "$CURRENT_BRANCH" != "$POSTFIX" ]] && [ "$COMMIT_SOURCE" != "merge" ] && [[ "$MESSAGE" != *"[#$POSTFIX]"* ]]; then
printf "%s\n\n[#%s]" "$MESSAGE" "$POSTFIX" > "$COMMIT_MESSAGE_FILE_PATH"
fi
두 번째 블로그 포스팅(husky로 prettier, eslint 적용 자동화하기)대로 husky 설정을 해줬다면 문제가 생기지 않았을테지만, 만약 포스팅대로 husky 설정을 하지 않았다면 package.json 파일에 아래 script를 추가해 주면 된다.
//package.json
"scripts": {
...
"prepare": "cd .. && husky install frontend/.husky && cd frontend",
"prepare:mac": "cd .. && husky install frontend/.husky && chmod +x frontend/.husky/* && git update-index --chmod=+x && cd frontend"
},
그리고 prepare 또는 prepare:mac 실행하면 끝이다.
yarn prepare
yarn prepare:mac
// or
npm run prepare
npm run prepare:mac
- window의 경우, prepare
- mac의 경우, prepare:mac
❗루트 폴더가 아닌 frontend 폴더에만 husky를 설치했기 때문에 "cd .. && frontend/ .husky && cd frontend" 경로 설정을 따로 해주었다. 만약 루트 폴더에서 바로 husky를 설치했다면 "prepare": "husky install"만 해줘도 된다.