300x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 성능 베이스캠프
- chromatic
- prettier 자동화
- 크로마틱
- Husky
- eslint 자동화
- git hooks
- 유틸함수
- string-width
- 협업
- vscode
- 클린코드
- 클로저
- 자바스크립트
- react
- css instead of js
- 프로젝트
- import정리
- 이슈번호자동화
- IDL attributes
- eslint에러 자동fix
- storybook
- webpack
- 프로젝트 카페인
- JavaScript
- CSS
- 우테코
- 우아한테크코스
- 카페인
- importOrder
Archives
- Today
- Total
FEB:)DAIN
깃 커밋 메시지에 이슈 번호를 자동으로 입력할 순 없을까? 본문
728x90
프로젝트 브랜치명 컨벤션이 feat/이슈번호여서, 브랜치명에서 이슈번호만 가져온 다음 커밋할 때마다 커밋 메시지 아래단(footer)에 이슈 번호를 자동으로 입력해주고 싶었다. 자동으로 입력된다면 깜빡하고 이슈 번호를 안 적는 일도 없고, 시간도 단축할 수 있기 때문이다.
아래 순서대로 진행한다면 이슈 번호 POSTFIX 자동화를 할 수 있다.
1) 프로젝트 폴더에 .githooks 폴더 생성
2) .githooks 폴더에 commit-msg 파일 생성
#!/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)
# [[ "$CURRENT_BRANCH" != "$POSTFIX" ]] 👉🏻 현재 브랜치명과 POSTFIX가 똑같으면 POSTFIX 입력 방지
# [ "$COMMIT_SOURCE" != "merge" ] 👉🏻 merge할 때, POSTFIX 입력 방지
# [[ "$MESSAGE" != *"[#$POSTFIX]"* ]] 👉🏻 이미 POSTFIX가 존재할 때, POSTFIX 중복 입력 방지
if [[ "$CURRENT_BRANCH" != "$POSTFIX" ]] && [ "$COMMIT_SOURCE" != "merge" ] && [[ "$MESSAGE" != *"[#$POSTFIX]"* ]]; then
printf "%s\n\n[#%s]" "$MESSAGE" "$POSTFIX" > "$COMMIT_MESSAGE_FILE_PATH"
fi
🧐 이슈 번호 추출에 사용된 명령어 설명
- grep '\*' 👉 * 표시된 브랜치(현재 위치의 브랜치)를 가져온다.
- sed 's/* //' 👉 * 제거
- sed 's/\([^/]*\).*/\1/' 👉 / 이후의 문자만 추출
- sed 's/^\([^-]*-[^-]*\).*/\1/' 👉 하나의 이슈에 여러 브랜치를 만들면서 feat/10-1 이런 형태로 브랜치를 만들 경우, 첫 번째 '-' 앞 뒤만 추출 (ex. 10-1)
3) 프로젝트 폴더에 Makefile 파일 생성
init:
git config core.hooksPath .githooks
chmod +x .githooks/commit-msg
git update-index --chmod=+x .githooks/commit-msg
# chmod +x .githooks/commit-msg 👉🏻 macOS, 리눅스에서 스크립트 권한 부여
# git update-index --chmod=+x .githooks/commit-msg
# 👉 macOS, 리눅스에서 브랜치가 바뀔 때마다 스크립트 실행시켜줘야 하는 문제 해결
4) 아래 코드 실행
새로 git clone을 할 때마다 아래 코드를 실행시켜줘야 한다. 한 번만 실행시키면 계속 적용된다. (window 기준)
git config core.hooksPath .githooks
❗macOS는 git clone 할 때마다 아래 코드를 실행시켜줘야 한다.
make
결과
참고 블로그
https://blog.deering.co/commit-convention/
728x90
'코딩 > 공부' 카테고리의 다른 글
JavaScript Closure는 무엇일까? (0) | 2023.10.19 |
---|---|
[우테코-FE] 성능 최적화하기 (0) | 2023.09.03 |
웹팩에서 파비콘 설정하기 (2) | 2023.08.16 |
Object.key/Entries/FromEntries 메서드 사용할 때도 타입이 잘 추론되게 할 수는 없을까? (0) | 2023.08.13 |