[Git] Git Hooks

hahaha·2022년 2월 13일
0

Git

목록 보기
5/5

Git Hooks

  • 어떤 이벤트가 발생할 때, 자동으로 특정 스크립트를 실행하도록 한다.

Client Hook

  • commit or merge가 발생했을 때 클라이언트에서 실행하는 훅

Server Hook

  • push가 발생했을 때 서버에서 실행하는 훅

적용하기

  • .git/hooks 디렉토리 내부에 스크립트를 저장
    - 훅 이름을 파일 확장자 없이 파일명으로 지정하면 적용 가능
    - ex. .git/hooks/pre-commit
    + 기본적으로 공식 스크립트 샘풀이 존재 .sample

Git Hooks 공유하기

  • .git 디렉토리는 버전 관리 대상이 아니므로 remote 서버에서 공유 불가(버전 관리 불가)

공유 방법

  1. 스크립트 공유
  • Git Hooks를 별도의 디렉토리에 넣어 버전 관리
  • .git/hooks 디렉토리로 복사하는 스크립트를 함께 공유 (단순한 파일 복사 방식)
  • git clone 후에 반드시 ./setup_hooks.sh를 실행해야하는 문제
./githooks/
    
    └─ pre-commit
    └─ pre-push
./setup_hooks.sh

#!/bin/sh
​
cp githoooks/* .git/hooks
  1. Git Template 활용
  • git clone 시, template 옵션에 별도의 Git Hooks 디렉토리 경로 지정
    - .git 디렉토리를 초기화할 수 있는 점 활용
    - ex. git clone --template=./githooks/ [git repo url]

위 두가지 방식은 Git Hooks이 적용되지 않을 가능성이 크다.

  1. husky 활용
  • .git/hooks 디렉토리를 건들지않고 git hook 스크립트 제어 가능
  • 자동 설치 및 셋업
    - npx husky-init && npm install
  • 새로운 hook 추가하기
    - npx husky add .husky/[hook 이름] '[실행할 명령어]'
    -> .husky 폴더 내부에 스크립트 파일 생성됨
  • 수동 설치 및 셋업
    - npm install --save-dev husky or yarn add -dev husky
// package.json
{
	"scripts": {
    	"prepare": "husky install"
  	},
}

참고 자료

husky 로 git hook 하자

훅으로 Gitd에 훅 들어가기

profile
junior backend-developer 👶💻

0개의 댓글