husky는 git hook을 손쉽게 제어하도록 도와주는 매니저라고 한다. git hook은 말 그대로 갈고리 같은 거라고 한다.
git hook은 어떤 이벤트가 생겼을 때 자동으로 특정 스크립트를 실행하도록 할 수 있다고 한다. 훅 종류로는 크게 클라이언트 훅과 서버 훅으로 나뉜다고 한다. 클라이언트 훅은 커밋이나 Merge(?) 할 때 실행되고, 서버 훅은 Push 할 때 서버에서 실행 된다.
클라이언트 훅은 커밋 워크플로 훅, 이메일 워크플로 훅 그리고 기타 훅으로 나뉜다고 한다.
커밋 워크플로 훅은 git commit
명령으로 커밋을 할 때 실행하는 훅이라고 한다. 그리고 이메일 워크플로 훅은 git am
명령으로 이메일을 통해 patch 파일을 적용할 때 실행하는 훅이라고 한다. 기타 훅은 Rebase, Merge, Push 와 같은 이벤트를 실행할 때 실행하는 훅을 포함한다고 한다.
분류에 따른 훅을 아래 정리해 보자
커밋 워크플로 훅
pre-commit : commit 을 실행하기전 실행
prepare-commit-msg :commit 메시지를 생성하고 편집기를 실행하기 전에 실행
commit-msg : commit 메시지를 완성한 후 commit 을 최종 완료하기 전에 실행
post-commit : commit 을 완료한 후 실행
이메일 워크플로 훅
applypatch-msg - git am 명령 실행 시 가장 먼저 실행
pre-applypatch - patch 적용 후 실행하며, patch 를 중단시킬 수 있음
post-applypatch - git am 명령에서 마지막으로 실행하며, patch 를 중단시킬 수 없음
기타 훅
pre-rebase : Rebase 하기 전에 실행
post-rewrite : git commit –amend, git rebase 와 같이 커밋을 변경하는 명령을 실행한 후 실행
post-merge : Merge 가 끝나고 나서 실행
pre-push : git push 명령 실행 시 동작하며 리모트 정보를 업데이트 하고 난 후 리모트로 데이터를 전송하기 전에 실행. push 를 중단시킬 수 있음
서버 훅은 Git repository로 push가 발생 하였을 때 서버에서 실행되는 훅이라고 한다. 시스템 관리자에게 더 중요한 hook이라고 할 수 있다고 한다. 종류는 pre-receive, update, post-receive 가 있다고 한다. 자세히는 아래 링크를 참조 하자.ㅠ
Git Hooks
는 .git/hooks
디렉토리에 저장한다고 한다. 훅 이름을 확장자 없이 파일명으로 지정하면 사용 할 수 있다고 한다.
Git Hooks는 .git 디렉토리에 저장 된다고 한다. 그런데 .git 디렉토리는 버전 관리 대상이 아니므로 Repositories에 올라가지 않는다고 한다. 기본적으로 Git hooks는 공유 할 수 없다는 뜻이라고 한다.
Git hooks를 공유하는 방법 중 하나가 husky라고 한다.
지금까지 조사하면서 Git Hooks를 강제할 수 있는 방법 중 husky가 유용한 방법 중 하나라고 한다. 예를 들어 push 전에 lint 검사로 코드 스타일이나 문법 오류를 점검 할 수 있다고 한다. 이 외에서 여러 방법으로 협업이 잦은 개발에서 관리를 용이하도록 도와준다.
설정 하는 방법은 npm을 통해 설치 한다음, package.json에서 설정하는 것이라고 한다.
훗날 자유로이 husky를 활용할 수 있기를 바라며...
[husky로 손쉽게 git hook 관리하기,huskyhoochu,2022년4월1일 접속]
https://www.huskyhoochu.com/npm-husky-the-git-hook-manager/
[8.3 Git맞춤 - Git Hooks,git,2022년4월1일 접속]
https://git-scm.com/book/ko/v2/Git%EB%A7%9E%EC%B6%A4-Git-Hooks
[husky: git hook을 통한 테스트 및 린트 자동화,호박너구리 블로그,2022년4월1일 접속]
https://blog.pumpkin-raccoon.com/85