힘내 후크 101

이 튜토리얼에서는 git hooks가 무엇인지에 초점을 맞추지 않고 사용 방법에 대한 간단한 예를 보여드리겠습니다.

자식 후크는 무엇입니까?



발신자 git documentation:

Hooks are programs you can place in a hooks directory to trigger actions at 
certain points in git’s execution. Hooks that don’t have the executable bit set 
are ignored.

즉,
  • 후크는 이벤트 발생 시 실행되는 프로그램입니다
  • .
  • 모든 후크가 있는 디렉토리가 있습니다
  • .

    모든 이벤트가 나열됩니다here.
    이 튜토리얼에서는 Pre-Commit 이벤트에 집중하고 싶습니다.

    샘플 후크


    .git/hooks 폴더에서 모든 기본 후크 샘플을 찾을 수 있습니다.

    $ ls .git/hooks
    applypatch-msg.sample      post-update.sample     pre-push.sample     prepare-commit-msg.sample
    commit-msg.sample          pre-applypatch.sample  pre-rebase.sample   update.sample
    fsmonitor-watchman.sample  pre-commit.sample      pre-receive.sample
    

    우리의 후크



    이 101 튜토리얼에서는 git hook 명령을 git commit 분기로 방지하는 간단한 master 생성 방법을 보여 드리겠습니다.
    이제 파일 확장자 없이 새 파일pre-commit을 만들 수 있습니다.

    $ touch .git/hooks/pre-commit
    

    이제 git가 Linux에서 실행되기 때문에(MinGW를 사용하는 Windows의 경우) 첫 번째 줄은 Shebang이어야 합니다.

    리눅스의 경우:

    #!/bin/bash
    

    Windows의 경우 git bash 위치여야 합니다. 예를 들면 다음과 같습니다.

    #!C:/Program\ Files/Git/usr/bin/sh.exe
    

    다음으로 분기를 인쇄하기 위해 git branch 명령을 실행해야 하지만 master를 사용하여 현재 grep에 있는지 알고 싶습니다.

    git branch | grep "* master"
    

    이제 다음 메시지와 함께 if로 워프합니다.

    if git branch | grep "* master" > /dev/null 2>&1
    then
        cat <<\EOF
    # Message
    EOF
    fi
    

    커밋을 비활성화하려면 0이 아닌 종료 코드를 제공해야 합니다.

    exit 1
    
    pre-commit에 대한 후크는 다음과 같습니다.

    if git branch | grep "* master" > /dev/null 2>&1
    then
        cat <<\EOF
    Commits are not allowed on branch Master!
    EOF
        exit 1
    fi
    

    해보자:

    $ git commit -m "Commit message"
    Commits are not allowed on branch Master!
    

    기본값으로 설정



    대부분의 사람들에게 어떤 문제가 있습니까? 우리가 게으르다는 것, 우리는 무언가를 한 번만 하고 싶다는 것입니다.git template directory를 사용하는 이 옵션이 있으며 이에 대한 자세한 내용을 찾을 수 있습니다here.
    이 템플릿 디렉터리가 수행하는 작업은 git init 명령을 사용할 때 이름이 점으로 시작하지 않는 이 디렉터리 아래의 모든 파일을 복사하는 것입니다.
    이제 template dir를 정의해 보겠습니다.

    $ export GIT_TEMPLATE_DIR=PATH
    $ cd PATH
    $ mkdir hooks
    

    그리고 아래PATH\hooks에서 후크를 만들고 즐기세요 :)

    Like this post?
    Support me via Patreon
    Subscribe to my

    좋은 웹페이지 즐겨찾기