728x90
반응형
이슈 관리로 Jira를 사용하는 회사라면 보통 Jira 티켓을 만들고 Jira 티켓에 있는 이슈번호로 branch를 만들어서 commit에도 이슈번호를 붙이는 경우가 있습니다.
예를 들면 Jira 이슈 티켓번호가 DINO-1234 라면 commit message는 [DINO-1234] 로 시작하게 됩니다.
하지만 사람은 실수를 하게되고 commit message의 이슈 넘버를 잘못 작성하게 되는 경우가 있습니다.
이런 문제를 해결하기 위해 git의 prepare-commit-msg 기능을 사용하면 됩니다.
.git/hooks 로 이동하기
cd .git/hooks
Android Studio라면 프로젝트 폴더 안에 .git 폴더가 있습니다.
Android Studio에서 terminal을 열면 .git이 있는 path로 열려서 바로 위의 명령어를 실행하면 됩니다.
prepare-commit-msg 만들기
nano prepare-commit-msg
prepage-commit-msg를 만들기 위해 nano 명령어를 사용합니다.
그리고 아래 스크립트를 복사해서 붙여줍니다.
#!/bin/bash
#BRANCH_NAME=$(git symbolic-ref —short HEAD)
BRANCH_NAME=`git rev-parse --abbrev-ref HEAD`
BRANCH_NAME="${BRANCH_NAME##*/}"
RAW_JIRA_ID=$(echo $BRANCH_NAME | egrep -o '[A-Z]+-[0-9]+')
JIRA_ID="[${RAW_JIRA_ID}]"
JIRA_ID_IN_COMMIT=$(cat $1 | egrep -o '\[[A-Z]+-[0-9]+\]')
BRANCH_JIRA_ID_IN_COMMIT=$(grep -c "\[$RAW_JIRA_ID\]" $1)
if [ ${#RAW_JIRA_ID} -gt 0 ] && [ ${#JIRA_ID_IN_COMMIT} -gt 0 ] && [ "$JIRA_ID" != "$JIRA_ID_IN_COMMIT" ]; then
echo "Replace JIRA ID ($JIRA_ID_IN_COMMIT) in commit message with JIRA ID ($JIRA_ID) in branch"
QUERY="s/$JIRA_ID_IN_COMMIT/$JIRA_ID/g"
QUERY="${QUERY/\[/\\[}"
QUERY="${QUERY/\]/\\]}"
sed -i.bak -e "$QUERY" $1
elif [ ${#RAW_JIRA_ID} -gt 0 ] && ! [[ $BRANCH_JIRA_ID_IN_COMMIT -ge 1 ]]; then
sed -i.bak -e "1s/^/$JIRA_ID /" $1
fi
붙여넣기 한 다음에 ctrl + x를 누르고 y를 누르고 enter를 누르면 저장까지 완료 됩니다.
권한 변경하기
실제로 동작하기 위해서는 실행권한인 x를 파일에 추가해줘야 합니다.
chmod +x prepare-commit-msg
확인하기
마무리
이것을 알기 전에는 저도 커밋할 때마다 항상 오타를 내서 실수를 하곤 했는데 이 기능을 추가하고 나서는 이슈번호를 안붙여도 되서 너무 편해졌습니다.
728x90
반응형
'개발 > Git' 카테고리의 다른 글
(Git) Git ignore 파일 생성기 (0) | 2023.05.07 |
---|---|
(Git) GitKraken에서 여러 계정 사용하기 (0) | 2023.05.07 |