2012-03-12 18 views
3

我已經和Git一起完成了這個任務,但是需要Mercurial來完成另一個項目。我的Git的配方包括一個post-receive hook,看起來像下面這樣:如何使用Mercurial更新並重新啓動Node應用程序? (相當於git post-receive的hg)

#!/bin/sh 
GIT_WORK_TREE=/home/ec2-user/www 
export GIT_WORK_TREE 
git checkout -f 

這將每次我推到遠程回購我的服務器上時間刷新我的工作app目錄。然後,我會運行我的應用程序node-supervisorsupervisor server.js,它會監視文件更改並在git推/文件更改後重新啓動節點。

我的問題是用Mercurial完成此操作的最佳方法是什麼。我已將changegroup鉤子看作類似的替代方法,但我找不到任何示例鉤子。謝謝!


更新:我實現

每低於&評論的答案,我去與changegroup掛鉤。具體而言,在myrepo/.hg/hgrc我用:

[hooks] 
changegroup = hg update && /path/to/restart/script.sh 

我有一個基本的shell腳本去重新啓動節點對每個上面安裝節點管理器,爲這個項目。它看起來像這樣:

#!/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的(全部)爲我工作。我也直接從我的repo目錄運行server.js。

回答

2

嘗試紅豆書中的Hooks part。特別是滾動至鉤參考部分可以使用的,例如:

changegroup -after遠程變更集添加

+2

而非'incoming'使用'changegroup'。如果有人執行發送10個變更集的'hg push','incoming'鉤子將運行10次,但'changegroup'只運行一次。 – 2012-03-12 01:40:12

+0

謝謝你們!我已更新我的問題以反映我的工作實施情況。 – 2012-03-12 18:30:29