これまでGitと協力していましたが、別のプロジェクトではMercurialが必要です。私のGitのレシピが含まれ、以下のように見えたことpost-receive hook
:私の作業appディレクトリ私は自分のサーバー上のリモートレポにプッシュするたびに更新しますPushした後にMercurialでノードアプリケーションを更新して再起動するにはどうすればいいですか? (hgのgit post-receiveに相当)
#!/bin/sh
GIT_WORK_TREE=/home/ec2-user/www
export GIT_WORK_TREE
git checkout -f
。私はnode-supervisor:supervisor server.js
と私のアプリを実行すると、ファイルの変更を監視し、git push/fileの変更後に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
私はpkill(all)が動作するノードプロセスが1つしかないので、私のために動作します。私はまた、私のrepoディレクトリから直接server.jsを実行しています。
を加えました。誰かが10回のチェンジセットを送信する 'hg push 'を実行した場合、' incoming'フックは10回実行されますが、 'changegroup'は1回だけ実行されます。 –
ありがとうございました!私は自分の質問を更新して、私の実装を反映しました。 –