Git에서는 이벤트가 생겼을 때, 스크립트를 실행 할 수 있도록 하는 hook이라는 기능이 있다.

coding convention 관련해서 필요하여 찾아서 정리하였다. 사실 내용 자체는 진즉에 쓰던 내용인데 늑장부리다가 이제서야 대충이라도 마무리에서 업로드한다..그마저도 사진 붙이기는 귀찮아서 미완성인채로...업로드(나중에 수정해야지)

무튼! Git에 있는 모든 repository에 이미 hook을 지원하고 있다(전혀 몰랐었음...).

현재 가지고 repository의 .git/hooks/ 경로에 진입하면 아래와 같은 파일들을 볼 수 있다.

.sample의 확장자를 가지고 있는 파일은 모두 git에서 제공하는 hook들 이다.

 

이 중에서, 코드 Lint/Formatting 목적으로 주로쓰이는 hook은 pre-commit 이다.

pre-commit은 commit 하기 전에 필수적으로 확인해야 할 것이 있을때 활용된다.

코드 스타일을 검사할 때 정말 많이 활용되는 것 같다. 구글에 검색해보면 예제도 엄청 많다.

 

직접 shell script을 작성해서 미리 설치된 formatter를 실행하도록 할수도 있지만,

파이썬은 쉽게 할 수 있는 플러그인이 있어서 편리하다.

 

가장 먼저 pre-commit 패키지를 설치한다.

$ pip install pre-commit

mac에서는 brew로 설치하면 되는 듯하다.

 

 

설치 후에 pre-commit-config.yaml 파일의 생성을 위해서 아래 명령어를 입력해준다.

$pre-commit sample-config >.pre-commit-config.yaml

나같은 경우 이렇게 하니 encoding type 관련된 에러가 발생하였는데, 그 때는 아래 명령어를 활용하면 된다.

$pre-commit sample-config | out-file .pre-commit-config.yaml -encoding utf8

그러면 sample conifg 파일이 생성된다.

config 파일에 사용할 플러그 인들에 대한 정보를 작성해 준다. 활용할 플러그인은 총 세개이다.

black : 코드 포멧팅 / flake8 : 코드 린트 / isort : 파이썬 import 정리

 

포멧팅을 하는데 굳이 린팅을 할 필요가 있나 싶긴한데, 찾아보니 py파일 말고 문서같은 것들을 위해 린트가 필요하다고 하긴하는데,

자바같은 경우 말고도 꼭 필요한진 잘모르겠다. 그리고, black의 경우 따로 configuration을 제공하진 않는데(yapf는 어느정도 제공해주긴함) 근데 formatting 자체가 일관된 코드 스타일을 맞추기 위해서 하는 것이고, python의 경우 PEP8이라는 확고한 스타일이 있다보니 딱히 필요없긴 한 것 같다. 어쨋든 각 플러그인의 설정을 위해 setup.cfg 파일도 작성해 준다.

 

 

마지막으로 아래 명령어를 작성하면 .git/hook 경로에 pre-commit 파일이 생기고,

다음에 commit 하면 자동으로 pre-commit이 진행된다!

$ pre-commit install

 

 

 

'Git' 카테고리의 다른 글

[Git] hook을 활용한 통일성 있는 commit message  (0) 2022.08.01

+ Recent posts