개발/Git

(Git) 커밋 할 때 자동으로 이슈번호 붙이기

DinoDev 2024. 8. 16. 22:15
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