以前にこれを達成するために Git を使用したことがありますが、別のプロジェクトでは Mercurial が必要です。私の Git レシピにはpost-receive hook
、次のような a が含まれていました。
#!/bin/sh
GIT_WORK_TREE=/home/ec2-user/www
export GIT_WORK_TREE
git checkout -f
サーバー上のリモートリポジトリにプッシュするたびに、作業中のアプリディレクトリが更新されます。次に、 node-supervisor :を使用してアプリを実行しますsupervisor server.js
。これにより、ファイルの変更が監視され、git push / ファイルの変更後に Node が再起動されます。
私の質問は、Mercurial でこれを達成する最善の方法は何かということです。同様の代替手段としてフックを調べましたが、changegroup
フックの例が見つかりません。ありがとう!
更新:私の実装
以下の回答とコメントに従って、changegroup
フックを使用しました。具体的には、myrepo/.hg/hgrc
私が使用した:
[hooks]
changegroup = hg update && /path/to/restart/script.sh
このプロジェクトでは、基本的なシェル スクリプトを使用してノードを再起動するか、上記のノード スーパーバイザーをインストールします。次のようになります。
#!/bin/sh
echo "Restarting Server" >> /logpath/server.log
sudo pkill -x node
sudo node server.js >> /logpath/server.log &
echo "Changegroup Hook Executed, Server Restarted"
exit 0
実行中の Node プロセスは 1 つだけなので、pkill (all) が機能します。また、repo ディレクトリから直接 server.js を実行しています。