「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
私の質問:
post-receive
たまたま別のマシンであるサーバー上のディレクトリを自動的に更新するために、フック (またはその他の方法)を実行するにはどうすればよいですか? とサーバーの更新後に postflight Perl スクリプトを実行するにはどうすればよいですか?
更新:
post-checkout
「テスト」のフックを作成しました。フックは、「テスト」が「レポ」から更新されたコードのコピーを受け取った後に実行する Perl スクリプトです。ただし、Perl スクリプトは実行されません。フックの名前を変更して試してみましたpost-merge
が、その方法でも喜びはありませんでした。クライアントの更新時にフックが確実に実行されるようにするにはどうすればよいですか?