git hook (pre-commit 등)

About_work·2023년 1월 2일
0

clean code

목록 보기
6/7

참고 링크


개념

  • git hook: 특정 상황(아래 사진 10가지 case)에 특정 스크립트를 실행할 수 있도록 하는 기능
  • 따로 설치 필요 x / git repository에서 이미 지원 중
  • git repo에서 cd ./git/hooks를 하면, 아래와 같이 나옴
  • 예제 샘플로서, shell과 Perl 스크립트로 작성돼 있고, 스크립트가 입력받는 값이 어떤 값인지 파일 안에 자세히 설명되어 있다.
  • Ruby나 Python 같은 익숙한 언어로 만들어도 된다.
  • 여기서 .sample 을 지우면 바로 적용된다.

종류

client hook

  • 커밋이나 merge 할 때 실행된다.
  • 저장소를 clone해도, client hook은 복사되지 않는다.
  • 만든 정책에 반드시 적용되도록 하려면 server 훅을 이용해야 한다.
  • 종류
    • commit-workflow 훅
      • pre-commit 훅
        • 커밋 전에, 빠뜨린 것은 없는지, 테스트는 확실히 했는지 등을 검사한다.
        • 이 훅의 Exit 코드가 0이 아니면 커밋은 취소된다.
        • pre commit으로 하면 좋은 것들
          • lint: 코드 스타일 검사
          • 라인 끝의 공백 문자를 검사
          • 새로 추가한 코드에 주석을 달았는지 검사
        • 사용법
          • 설치: $ pip install pre-commit
          • .pre-commit-config.yaml 이라는 설정 파일을 필요로 합니다.
          • pre-commit 에서 제공하는 샘플 설정으로 yaml 파일을 생성하고 싶다면? $ pre-commit sample-config > .pre-commit-config.yaml
          • 생성된 샘플 파일은 아래 스크립트와 같이 4개의 hook이 설정되어 있는 것을 볼 수 있다.
          • pre-commit 도구는 인터넷에 공개되어 있는 Git 저장소로부터 hook을 내려받아서 실행을 합니다. https://pre-commit.com/hooks.html 에서 다양한 pre-commit hook을 만나볼 수 있습니다.
          • pre-commit 실행 결과 실패한 hook은 자동으로 수정해주기 때문에, 실패 후 변경분을 staging 영역에 추가하고 다시 pre-commit을 하면 된다.
          • 모든 개발자들이 해당 repo에서 설정한 pre-commit을 적용하려면? 각자 한번만 pre-commit install 을 실행하면 됩니다.
    # See https://pre-commit.com for more information
    # See https://pre-commit.com/hooks.html for more hooks
    repos:
      - repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v3.2.0
        hooks:
          - id: trailing-whitespace
          - id: end-of-file-fixer
          - id: check-yaml
          - id: check-added-large-files
    • prepare-commit-msg 훅
      • 사람이 커밋 메시지를 수정하기 전에, 먼저 프로그램을 손보고 싶을 떄 사용한다.
      • 커밋 메시지에 템플릿을 적용하거나, Merge 커밋, Squash 커밋, Ament 커밋일 때 유용하다.
      • 이 스크립트로 커밋 메시지 템플릿에 정보를 삽입할 수 있다.
    • commit-msg 훅
      • 커밋 메시지가 정책에 맞는지 검사하는 스크립트를 만들 수 있다.
      • 최종적으로 커밋이 완료되기 전에, 프로젝트 상태나 커밋 메시지를 검증한다.
    • post commit 훅
      • 커밋이 완료되면 실행.
      • 일반적으로 이 스크립트는, 커밋된 것을 누군가 혹은 다른 프로그램에 알릴 때 사용된다.
    • email-workflow 스크립트
      • 추후 필요하면 작성
    • 기타 훅
      • 추후 필요하면 작성

server hook

  • push 할 때, push 전후에 서버에서 실행된다.
  • push 전에 실행되는 훅이 0이 아닌 값을 반환하면, 해당 Push는 거절되고 client는 에러 메시지를 출력한다.
  • 종류
    • pre-receive 훅
      • 추후 필요하면 작성
    • update 훅
      • 추후 필요하면 작성
    • post-receive 훅
      • 추후 필요하면 작성

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글