날짜: 2024-03-11
feature/PROJ-123_desc
hotfix/BUG-123_desc
PROJ-123
과 BUG-123
은 작업을 대표하는 티켓 코드로서 커밋메시지에 남겼을때 히스토리 추적에 활용가능한 이점이 있다.prepare-commit-msg
라는 훅이 있습니다. 이를 활용하여 브랜치 이름에서 티켓 코드를 추출하고, 이를 커밋 메시지에 자동으로 추가하는 방법을 적용할 수 있습니다..git/hooks
디렉토리 안에 prepare-commit-msg
파일을 생성합니다. 만약 이미 존재한다면, 해당 파일에 로직을 추가합니다.chmod +x .git/hooks/prepare-commit-msg
vi .git/hooks/prepare-commit-msg
으로 스크립트를 열고 다음 내용을 구현합니다. 이 스크립트는 브랜치 이름을 확인하고, 브랜치 이름에 따라 커밋 메시지에 티켓 코드를 자동으로 추가합니다.#!/bin/sh
# 현재 브랜치 이름을 가져옵니다.
BRANCH_NAME=$(git branch --show-current)
# 티켓 코드의 prefix 리스트를 정의합니다. (JIRA 프로젝트 코드)
PREFIXES=("DEV" "BE")
# 티켓 코드를 초기화합니다.
TICKET_CODE=""
# 각 prefix에 대해 루프를 돌며 티켓 코드를 찾습니다.
for PREFIX in "${PREFIXES[@]}"; do
MATCH=$(echo $BRANCH_NAME | grep -oE "${PREFIX}-[0-9]+" || true)
if [ -n "$MATCH" ]; then
TICKET_CODE=$MATCH
break
fi
done
# 티켓 코드가 존재하고, 커밋 메시지가 이미 티켓 코드를 포함하고 있지 않다면, 커밋 메시지를 수정합니다.
if [ -n "$TICKET_CODE" ] && ! grep -qE "^$TICKET_CODE" "$1"; then
# 커밋 메시지 파일의 내용을 임시 파일에 복사합니다.
cp "$1" "$1.tmp"
# 커밋 메시지 파일을 업데이트합니다.
echo "$TICKET_CODE $(cat "$1.tmp")" > "$1"
# 임시 파일을 제거합니다.
rm "$1.tmp"
fi
이 스크립트는 브랜치 이름을 기반으로 티켓 코드를 추출하고, 해당 코드가 커밋 메시지에 이미 포함되어 있지 않은 경우에만 커밋 메시지의 맨 앞에 티켓 코드를 추가합니다.