Git commit 시 브랜치 이름에서 JIRA 이슈 키를 추출하여 자동으로 커밋 메시지 끝에 붙이는 스크립트

박진현·2023년 3월 15일
0

아래 스크린샷처럼, 브랜치명에서 지라 issue key를 추출하여 커밋시마다 붙여주는 스크립트입니다.

  1. 터미널에서 사용하려는 repository에 들어갑니다.

  2. .git/hooks 폴더에 들어갑니다.

  3. 빔이나 나노같은 텍스트에디터로 prepare-commit-msg 파일을 만듭니다. (확장자는 없습니다.)

  4. 아래 코드를 작성하고 저장합니다.

    #!/bin/sh
    
    # Git repository의 root directory 경로를 구합니다.
    git_root="$(git rev-parse --show-toplevel)"
    
    # Git commit 시 전달되는 커밋 메시지를 저장하는 변수입니다.
    commit_msg_file="$git_root/.git/COMMIT_EDITMSG"
    
    # 브랜치 이름에서 이슈 키를 추출합니다.
    issue_key_regex='([A-Z]+-[0-9]+)$'
    branch_name=$(git rev-parse --abbrev-ref HEAD)
    if [[ "$branch_name" =~ $issue_key_regex ]]; then
        issue_key=${BASH_REMATCH[1]}
    else
        issue_key=""
    fi
    
    # 이슈 키가 존재하면 커밋 메시지 끝에 이슈 키를 추가합니다.
    if [ -n "$issue_key" ]; then
        echo "" >> $commit_msg_file
        echo "[$issue_key]" >> $commit_msg_file
    fi
  5. 터미널에서, chmod +x prepare-commit-msg 를 입력하여 실행권한을 줍니다.

  6. 이제 커밋할때마다 자동으로 커밋의 마지막 줄에 이슈키가 작성됩니다.

브랜치명 컨벤션에 따른 regex

  1. feature/이름/브랜치명-이슈키 일 경우

    issue_key_regex='([A-Z]+-[0-9]+)$'
  2. feature/이름/이슈키-브랜치명 일 경우

    issue_key_regex='(?<=\/)[A-Z]+-\[0-9]+'
  3. feat/이름/이슈키/브랜치명 일 경우

    issue_key_regex='\/([A-Za-z]{2}-[0-9]+)\/'

지라에서 권장하는 Issue-Key Regex

https://confluence.atlassian.com/stashkb/integrating-with-custom-jira-issue-key-313460921.html

profile
👨🏻‍💻 호기심이 많고 에러를 좋아하는 프론트엔드 개발자 박진현 입니다.

0개의 댓글