(허스키) 허스키를 사용하여 커밋 메시지 유효성 검사 수행
◆ 참고
이 게시물은 시리즈의 일부입니다.
이전 프로젝트 설정 방법 게시물을 확인하지 않은 경우 제대로 작동하지 않을 수 있습니다.
이전 게시물로 이동: 이동
이번 포스트에서는 허스키와 함께 커밋 메시지 확인어떻게 하는지 알아봅시다.
팀당 (+ 회사) 커밋 메시지 규칙있는 경우도 있습니다
단, 협약만 성립 지키지 않으면 의미가 없다.
.
개발자라면 누구나 믿을 수 있지만 사람이 하는 일이기 때문에 실수는 불가피하다.
그런 미리 실수를 피하십시오어떻게 하는지 알아봅시다.
커밋 메시지
커밋 메시지 후크함께 걸을 때 서면 메시지얻어 질 수있는
그 의미는 커밋 규칙 확인할 수 있다는 것
다시 말해서, 잘못된 커밋 메시지 방지할 수있어
◆ 커밋 메시지 컨벤션 예시
이는 회사마다 다를 수 있으므로 가상 회사를 결정하고 구현합니다.
커밋 메시지 규칙다음과 같이 생겼다고 가정해 보겠습니다.
제목
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
결과
자식 커밋시도하는 동안 잘 작동하는지 확인시도하는 것이 좋을 것입니다
이처럼 모든 프로젝트는 필요한 것을 추가하십시오할 수 있어요.
마지막
오류가 있으면 댓글로 알려주세요.