0

「devel」、「repo」、「server」の 3 つのマシンがあります。git pushレポを変更する前に、開発マシンでハウスキーピングを行う必要があります。私はこれを「プリフライト」と呼んでいます。次に、サーバーに移動し、git pullさらにハウスキーピングを行って、Web アプリを更新して再起動する準備をすべて整える必要があります。サーバー上でのこのハウスキーピングを「ポストフライト」と呼んでいます。

実際にプリフライトのハウスキーピングを行い、次に git add、commit、push dance を実行する Perl スクリプトを実行することで、プリフライトを行うことができます。

もう一方のプロセスを自動化したいと思います。つまり、リポジトリが更新を受信したら、サーバーの更新を実行したいと思います。ローカルレポ、つまりレポもある「サーバー」では、次のpost-receiveフックを介してそれを行うことができます

GIT_WORK_TREE=/path/to/directory git checkout -f

私の質問:

  1. post-receiveたまたま別のマシンであるサーバー上のディレクトリを自動的に更新するために、フック (またはその他の方法)を実行するにはどうすればよいですか? と

  2. サーバーの更新後に postflight Perl スクリプトを実行するにはどうすればよいですか?

    更新: post-checkout「テスト」のフックを作成しました。フックは、「テスト」が「レポ」から更新されたコードのコピーを受け取った後に実行する Perl スクリプトです。ただし、Perl スクリプトは実行されません。フックの名前を変更して試してみましたpost-mergeが、その方法でも喜びはありませんでした。クライアントの更新時にフックが確実に実行されるようにするにはどうすればよいですか?

4

1 に答える 1

0

次のホップが github であるとします。トリガーは次のようになります

ポスト受信フック コード

    #!/bin/bash -x

    GIT_DIR=$(dirname $(dirname $(readlink -f $0)) )
    git push --mirror /home/mvaidya/mirroring_test/backup.git
    #上記の URL これは github である必要があります
于 2012-06-25T11:08:13.787 に答える