훅 동작


훅(Hooks)은 깃의 특정 동작에 반응하여 동작하는 스크립트입니다. 사용자 훅 스크립트를 이용하여 깃의 동작을 확장할 수 있습니다.


스크립트


훅(hook) 스크립트는 깃의 동작에 결합되어 실행됩니다. 깃의 명령에 따라 스크립트의 종류를 구별할 수 있습니다.

  • 클라이언트 훅 커밋이나 병합과 같이 로컬 저장소에서 주로 동작하는 반응에 대해 설정하는 스크립트를 말합니다.

  • 서버사이드 훅 푸시와 같이 원격 저장소에서 주로 동작을 하는 반응에 대한 스크립트를 말합니다.


단계별 스크립트


훅은 하나의 깃 동작에 대해 처리하게 됩니다. 하나의 동작은 다시 여러 단계로 구별하며 이를 구분하여 스크립트를 작성할 수 있습니다.

  • Pre pre 접두사는 동작을 처리하기 전에 실행되는 스크립트를 의미합니다. Pre가 붙은 훅은 보통 동작을 적용하기 전 단계에서 승인, 거부, 체크 등을 합니다.

  • Post post는 동작이 수행되고 나서 처리되는 스크립트들을 말합니다. 동작을 완료되고 추가적인 작업을 더 하고자 할 때 사용합니다.

그 외 중간 단계의 prepare와 같은 스크립트도 존재합니다.


동작 취소


훅을 이용한 스크립트는 깃의 동작을 검사합니다. 단순한 동작 패턴을 검색할 수도 있으며, 추가적인 작업들도 수행할 수 있습니다.

동작을 검사하는 도중, 조건일 일치하지 않을 때 반한 값을 통하여 동작을 취소할 수 있습니다.


반환값


스크립트 작성 시 반환값을 깃에게 전달할 수 있습니다. 반환값으로 0을 전달하게 되면 정상적인 작업을 말합니다.

0 이외의 값을 전달할 경우 깃은 비정상 동작으로 인식하며, 깃의 동작을 취소하게 됩니다.


주의


훅 스크립트를 사용하여 깃의 동작을 확장할 수 있는 점은 매력적입니다. 하지만 이를 너무 남용하게 되면 깃의 성능이 저하될 수도 있습니다.

깃은 다른 개발자들과 협력할 때 방해 요소가 될 수 있습니다. 확장된 훅 기능은 다른 개발자들과도 공유가 필요합니다. 또한, 학습을 해야 되는 경우도 발생합니다.

훅 기능은 꼭 필요한 경우에만 사용하는 것이 좋습니다.


실습 준비


훅 기능을 학습하기 위해 별도의 저장소를 생성합니다.


저장소 생성

새로운 저장소를 만듭니다.

$ mkdir githooks
$ cd githooks/
$ git init
Initialized empty Git repository in E:/githooks/.git/
infoh@DESKTOP-VAKLOFQ MINGW64 /e/githooks (master)

훅 기능 확인

깃은 다양한 훅 기능을 제공하고 있습니다. 깃의 help 명령으로 상세한 훅 사용 매뉴얼을 볼 수 있습니다.

infoh@DESKTOP-VAKLOFQ MINGW64 /e/githooks (master)
$ git help hooks