Git hooks

November 25, 2018 - 1 minute read -
git

Git에서는 특정 시점에서 지정한 스트립트를 실행시켜주는 기능이 있다. 사용하기가 굉장히 간단한 것에 비해 활용 범위는 정말 넒을 거 같다!

우아항형제들에서는 자동으로 이미지를 압축하는 기능을 예시로 보여줬다.
참고: http://woowabros.github.io/tools/2017/07/12/git_hook.html

사용 법은 간단하다!

아무 레파지토리에 가서 cd .git/hooks 를 입력해보자.

위와 같이 여러가지 sample들이 있는데, 파일명에서 sample만 제거하면 된다.
예를 들어 pre-commit.sample을 pre-commit으로 이름을 바꾸면 commit 전에 pre-commit 스크립트가 실행된다!

이번 프로젝트 중에 폴더들 안에 동일한 폴더명이 존재하면 안되는 상황이 있었다. 그래서 폴더들을 탐색하면서 중복을 검색하는 로직을 자바스크립트로 구현하고, 쉘스크립트로 실행하도록 했다.

이제 commit을 하려고 했을 때 내가 설정해놓은 검사를 통과하지 못하면 commit을 하지 못한다. eslint같은 느낌..!

팀원과 Git hooks을 공유하려면 어떻게 할 수 있을까?

Symbolic Link 를 사용하면 된다! Symbolic Link는 간단하게 말하면, 하나의 파일이나 폴더가 다른 파일이나 폴더를 참조 할 수 있도록해준다!

이런 식으로 ‘ln’을 사용해서 내가 만들어놓은 hooks 폴더안에 있는 스크립트 파일들을 .git/hooks 안에 있는 스크립트 파일들과 연결해준다. 팀원들은 위 사진에 있는 스크립트 파일을 실행하는 것만으로 내가 짜놓은 hook 스크립트들을 사용할 수 있게 된다.

Resource

http://woowabros.github.io/tools/2017/07/12/git_hook.html https://git-scm.com/docs/githooks https://ko.wikipedia.org/wiki/%EC%8B%AC%EB%B3%BC%EB%A6%AD_%EB%A7%81%ED%81%AC