프론트엔드 개발

[Git hooks] git commit시 branch name 자동반영 본문

Front-End/git

[Git hooks] git commit시 branch name 자동반영

태나미 2022. 4. 13. 14:32

이번에 지라 처음 사용하면서 알아본 것

  • feature 브런치 feature/SCRUM-0000_whatEver 같이 설정
  • 기존 commit 규칙: [SCRUM-0000] commit 내용
  • [SCRUM-0000]을 자동 반영하고 싶어서 알아본 것 Git hook

Git Hook란

Git Hooks 는 Git과 관련한 어떤 이벤트가 발생했을 때 특정 스크립트를 실행할 수 있도록 하는 기능이다.
크게 클라이언트 훅 과 서버 훅 으로 나뉘는데 클라이언트 훅 은 커밋, Merge 가 발생하거나 push 가 발생하기 전 클라이언트에서 실행하는 훅이다. 반면 서버 훅 은 Git repository로 push 가 발생했을 때 서버에서 실행하는 훅이다.

설정 방법

  • 프로젝트 내에 숨겨진 파일. git에 들어가면 hooks에 여러 sample이 있는데
  • prepare-commit-msg 파일을 만들고 다음과 같이 작성했다.
  • prepare-commit-msg 훅은 Git이 커밋 메시지를 생성하고 나서 편집기를 실행하기 전에 실행된다.

출처: https://library.gabia.com/contents/8492/

#!/bin/bash

if [ -z "$BRANCHES_TO_SKIP" ]; then
  BRANCHES_TO_SKIP=(main develop release)
fi

BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_NAME="${BRANCH_NAME##*/}"
JIRA_ID=`echo $BRANCH_NAME | egrep -o 'SCRUM-[0-9]+'`

echo ${BRANCH_NAME}
echo ${JIRA_ID}

BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
BRANCH_IN_COMMIT=$(grep -c "$JIRA_ID" $1)

if [ -n $JIRA_ID ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]] && ! [[ $BRANCH_IN_COMMIT -ge 1 ]]; then
  sed -i.bak -e "1s/^/[$JIRA_ID] /" $1
fi
  • BRANCH_NAME과 JIRA_ID를 테스트해서 뽑아보았다.

commit시 branch 만들 때 작성한 SCRUM과 번호가 반영되어 있다.

 

출처: 

Comments