2012-07-16 6 views
25

"テスト"はGitフックの一般的な使い方なので、私の質問は検索するのが難しいです。gitフックをテストするには

私はかなり関係するgit post-receiveフックを書いており、それをテストする最良の方法が何であるかを知りたいと思っています。現在、私のプロセスは次のとおりです。

  • はダミーローカルレポ
  • プッシュ変化に変更をコミットするダミーローカルレポに変更を加えるダミー「リモート」レポに投稿して、受信するための変更を行いますダミーのリモートレポ

これを簡単にテストする方法はありますか?理想的には、それは次のようになります。テストする

  • 問題「魔法」コマンドダミーレポに投稿して、受信する

    • メイク変更(S)ポストを、受信おそらく

    I缶「再発行」前回のプッシュまたはリモート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を実行することがあってはなりません/tmp/hook_test/git.git

    関連する問題