커밋 전 및 업데이트 후 git hook 사용

git 워크플로에 몇 가지 추가 처리를 추가하는 것은 때때로 유용하고/멋지고/흥미롭습니다. 나는 일반적으로 클라이언트 측에서 (외부적으로 활성화하거나 서버 측 후크를 사용하여 사용할 수 있는 서버 측에서 일이 발생하도록 하는 대신에) 이 중 극히 일부를 사용하고 포함된 두 개를 적용합니다. .git/hooks/ 기본적으로 pre-commitpost-update 커밋이 수행되기 전과 일련의 커밋이 푸시된 후에 추측됩니다.

운영 엔지니어로서 저는 Terraform과 같은 도구를 자주 사용합니다. 이 도구에는 서식 도구와 유효성 검사 도구가 포함되어 있다는 이점이 있습니다. 커밋하면 매니페스트의 유효성을 검사하고 업데이트되는 매니페스트의 형식/스타일을 확인할 수 있습니다. 내 프로젝트 루트에서 .git/hooks/pre-commit.sample 를 수정하여 이 작업을 수행할 수 있으며 다음과 같은 항목을 추가하여 다음 표준에 대해 .tf 파일을 확인할 수 있습니다.

modified_files=$(git ls-files -m)
for f in modified_files
do
    if [-e "$f" ] && [[ $f == *.tf ]]; then
        terraform validate $(dirname $f)
        terraform fmt $f -check=true
        git add $f
    fi
done


나는 이것을 약간 다르게 처리하기 위해 githooks에서 내 접근 방식을 수정했지만 기본적으로 git의 동작을 관리하기 위한 스크립트 가능한 인터페이스임을 강조합니다.

이 후크를 활성화하려면 파일을 .git/hooks/pre-commit (no .sample )에 복사하십시오.

post-update 스크립트에서 더 관련된 예를 살펴보겠습니다. 제 경우에는 Mac에서 작업하고 있으므로 이 기능을 최대한 활용하고 싶습니다. 따라야 할 시각적 신호를 더 소개할 수 있으므로 Applescript도 사용하고 싶습니다.
.git/hooks/post-update 에서 푸시된 마지막 커밋의 해시와 메시지와 푸시한 분기를 가져오고 싶습니다.

COMMIT=$(git log -1 HEAD | head -n 1 | awk '{print $1}')
MESSAGE=$(git log --format=%B -n 1 $COMMIT | xargs echo )
BRANCH=$(git branch | grep \* | cut -d ' ' -f2)


그리고 이것을 유용하게 만들기 위해 이 호출을 osascript에 추가하여 최근 푸시 요약을 볼 수 있습니다.

/usr/bin/osascript <<EOF
display dialog "To $BRANCH:\n\n$MESSAGE\n\n\t($COMMIT)\n" with title "Git Push" buttons {"I meant to do that"} default button 1


팝업 대화 상자와 내가 한 일을 상기시키기 위해 다음 작업으로 넘어가기 전에 마지막으로 작업을 확인하기 위해 멈춰 섰습니다.

좋은 웹페이지 즐겨찾기