0

次のコミット後のフックをセットアップして実行しています。

#!/bin/bash
/usr/bin/svn update /var/www/html/dev > /var/www/svnrepo/hooks/post-commit-log

私は Python/Django で開発していますが、「.py」ファイルに変更を加えるたびに、SSH で「sudo /sbin/service httpd restart」する必要があります...これを一番下に追加する方法はありますかポストコミットファイルの?

私が予測および/または考えているいくつかの障害:

  • 私は Apache から SVN リポジトリを提供しているため (例: http://www.iq-development.com/blog/creating_a_subversion_development_environment )、コミット後に「確認」が送り返される前に再起動すると、いくつかの問題が発生する可能性があります...
  • post-commit フックは、ユーザーの「apache」の下で実行されると思います...このユーザーには、/sbin/service httpd restart へのアクセス許可がありますか?

-Fedora コア 8

ありがとう!-トム

4

1 に答える 1

2

Apache プロセスが 1024 未満のポートでリッスンしている場合、それ自体を停止および開始するには root である必要があります。1024 を超えるポートをリッスンしている場合は、root 以外のユーザーとして起動し、post-commit フックを使用して再起動できます。

また、グレースフルが使用可能な Apache バージョンの場合、作業中の接続を強制終了しないように、再起動の代わりに /etc/init.d/httpd グレースフルを使用することもできます。

最後に、post-commit フックは、バックグラウンドで別のサブプロセスを開始してから、再起動してクライアントを完全に終了させることができます。フック スクリプトが stderr から完全に切り離されていることを確認する必要があります。たとえば、これは Subversion 1.6.1 でコミット後のフックとして機能し、クライアントはサーバーから切り離され、スリープは引き続き実行されます。

#!/bin/sh
/bin/sleep 60 2>/dev/null &

サイトが更新されるまで 1 分待つことができる場合は、「svn update」を実行し、更新があった場合はサーバーをバウンスするスクリプトを root で実行する cron に入れることができます。

于 2009-04-23T00:32:57.243 に答える