2012-07-16 3 views
25

"testing"은 Git hook의 일반적인 용도이기 때문에, 나의 질문은 찾기가 어렵습니다.git hooks를 테스트하는 방법

나는 상당히 관련된 git post-receive 후크를 작성하고 있으며 테스트하는 가장 좋은 방법은 무엇인지 알고 싶다. 현재 내 프로세스는 다음과 같습니다

  • 더미 지역의 repo
  • 푸시 변화에 변화를 저지 더미 지역의 repo에 변경 더미 "원격"의 repo에 게시-받을 변경 더미 원격 저장소

더 쉬운 방법이 있습니까? 이상적으로는 같을 것이다 : 테스트

  • 문제 "마법"명령 더미의 repo에 게시-받을

    • 메이크업 변화 (들) 포스트 - 수신 아마도

    내가 할 수있는 "재발행" 이전 푸시 또는 원격 Repo가 마치 특정 해시가있는 푸시를받은 것처럼 작동합니까?

  • 답변

    13

    인자/환경을 기록하고 파일에 덤프하는 훅을 작성하십시오. 그런 다음 동일한 환경/논증으로 여가 시간에 실제 훅을 다시 호출 할 수 있습니다. 그러면 똑같은 푸시를 다시 발행 한 것처럼 작동합니다.

    +0

    관련 변수에 대해 수동으로 검사 (반향)하여 대신 수행했습니다. – Errol

    +9

    그런 "덤퍼"걸이는 어떻게 생겼을까요? –

    +4

    @JonWatson, 방금'echo $ @; echo;를 사용했습니다. pwd; 에코; 세트' – Lucas

    6

    이 4 년 전의 질문에 답하십시오. 로컬 환경에서 후크를 테스트하려는 경우

    , 나는, 후속 조치에 대한 세부 명령을 내릴 샘플로 post-receive를 사용

    $ mkdir /tmp/hook_test 
    $ cd /tmp/hook_test 
    
    # set local git repo, where you put hooks in it. 
    $ git clone --bare https://github.com/git/git.git 
    
    # set develop environment which is cloned from the new created repo. 
    $ git clone git.git repo 
    
    # copy and rename the hook you need test to "post-receive" 
    $ cd git.git/hooks 
    $ cp ~/post-receive-test post-receive 
    
    # suppose the hook script is bash script. 
    # edit "post-receive" and add "set -x" to second line in it to active debug 
    
    $ cd /tmp/hook_test/repo 
    # emulate a hook trigger, do some changes, "git add" and "git commit" it 
    
    $ git push 
    
    # Now you should see the script "post-receive" runs automatically with debug details. 
    

    당신은 업데이트는 것을, git push를 실행할 수 없어야합니다 로컬 repo에 푸시되었습니다. /tmp/hook_test/git.git