2012-03-12 7 views
3

これまで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-supervisorsupervisor 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を実行しています。

答えて

2

レッドビーン本のHooks partをお試しください。特に例えば、部分は、使用してもよいフック参考までスクロール.:

changegroupリモートチェンジ-afterはなく `` changegroup`を使用incoming`より

+2

を加えました。誰かが10回のチェンジセットを送信する 'hg push 'を実行した場合、' incoming'フックは10回実行されますが、 'changegroup'は1回だけ実行されます。 –

+0

ありがとうございました!私は自分の質問を更新して、私の実装を反映しました。 –

関連する問題