[husky] husky를

(허스키) 허스키를 사용하여 커밋 메시지 유효성 검사 수행

◆ 참고

이 게시물은 시리즈의 일부입니다.

이전 프로젝트 설정 방법 게시물을 확인하지 않은 경우 제대로 작동하지 않을 수 있습니다.

이전 게시물로 이동: 이동

이번 포스트에서는 허스키와 함께 커밋 메시지 확인어떻게 하는지 알아봅시다.

팀당 (+ 회사) 커밋 메시지 규칙있는 경우도 있습니다

단, 협약만 성립 지키지 않으면 의미가 없다.

.

개발자라면 누구나 믿을 수 있지만 사람이 하는 일이기 때문에 실수는 불가피하다.

그런 미리 실수를 피하십시오어떻게 하는지 알아봅시다.

커밋 메시지

커밋 메시지 후크함께 걸을 때 서면 메시지얻어 질 수있는

그 의미는 커밋 규칙 확인할 수 있다는 것

다시 말해서, 잘못된 커밋 메시지 방지할 수있어

◆ 커밋 메시지 컨벤션 예시

이는 회사마다 다를 수 있으므로 가상 회사를 결정하고 구현합니다.

커밋 메시지 규칙다음과 같이 생겼다고 가정해 보겠습니다.

제목 
Blank 
본문 (옵션)
Blank 
푸터 (Jira Ticket)

◆ 세부 컨벤션

제목(필수): (feat|fix|docs|style): 50자 이내

본체(선택 사항): 텍스트

바닥글(필수): 지라 티켓~에서 (영어 – 숫자) ex)로 작성 (ABCD-1234)

위의 어떤 단락 사이~ 안에 새 줄이것은 사용 가능해야합니다

위의 규칙이 있다고 가정하고 구현해 봅시다.

◆ 시행

첫 번째 제목구현하자

위업, 수정, 문서, 스타일 중 1개~로 시작하다 :텍스트 다음에 50자 이내해야한다

예를 들어 다음과 같아야 합니다.

기능: 경고 대화 상자 추가

위의 규칙을 테스트하기 위해 정규식 쓰기할 수 있어요.

commit_msg_title_regex=’^(feat|fix|docs|style): . {1.50}’

위의 정규식으로 테스트할 수 있습니다.

몸은 선택적입니다따라서 테스트할 필요가 없습니다.

바닥글은 Jira 티켓입니다.

작성해야합니다.

Jira 티켓의 규칙을 확인하세요 (로 시작하는그리고 ) 로 끝나다그리고 그 사이에 영어 – 숫자그것은 구성

테스트할 수 있도록 정규식 쓰기할 수 있어요.

commit_msg_jira_regex=”\((AZ)+-(0-9)+\)$”

제목, 본문 및 바닥글에 대해 구현된 모든 규칙 유효성 검사 코드.

지금 각각 사이의 줄바꿈있는지 확인해야 합니다.

이 부분이 까다로울 수 있지만 생각해보세요.

커밋 메시지 규칙에 따라 경우의 수를 쓰시오해보자.

아래에 경우의 수나온다

– 사례 1

제목 

본문 

푸터

– 사례 2

제목 

푸터

-- -->

사건 번호 자세히 보기 함께있다

제목 아래에 1칸, 바닥글 위에 1칸그만큼 새 줄오전.

다시 말해서 이 부분만 확인당신이 할 수

커밋 메시지 위에서 2번째 줄받는 방법은 다음과 같습니다.

second_line=$(echo “$commit_msg”)

커밋 메시지 아래 두 번째 줄받는 방법은 다음과 같습니다.

last_second_line=$(echo “$commit_msg” | 꼬리 -n 2 | 머리 -n 1)

이제 변수 문자열이 비어 있는지 확인할 수 있어요.

이 부분은 쉘 스크립트 내용이므로 아래 최종 대본을 보고 이해하기해보자.

◆ 최종 스크립트

commit_msg_file=$1
commit_msg=$(cat $1)
second_line=$(echo "$commit_msg" | sed -n '2p')
last_second_line=$(echo "$commit_msg" | tail -n 2 | head -n 1)

commit_msg_title_regex='^(feat|fix|docs|style): .{1,50}'
commit_msg_jira_regex="\((A-Z)+-(0-9)+\)$"

# 제목
if !
grep -qE "$commit_msg_title_regex" "$commit_msg_file"; then echo "COMMIT REJECTED: Please write according to the commit message rule." exit 1 fi # 2번째 줄 if !
( -z "$second_line" ); then echo "COMMIT REJECTED: The 2nd line should be blank." exit 1 fi # 마지막 2번째 줄 if !
( -z "$last_second_line" ); then echo "COMMIT REJECTED: The 2nd last line should be blank." exit 1 fi # Jira ticket if !
tail -n +1 "$commit_msg_file" | grep -qE $commit_msg_jira_regex; then echo "COMMIT REJECTED: Please check jira ticket." exit 1 fi

결과

자식 커밋시도하는 동안 잘 작동하는지 확인시도하는 것이 좋을 것입니다

이처럼 모든 프로젝트는 필요한 것을 추가하십시오할 수 있어요.

마지막

오류가 있으면 댓글로 알려주세요.