如何更新&推送后使用Mercurial重新启动Node应用程序? (相当于以hg格式发布的git)

时间:2012-03-12 00:13:14

标签: node.js mercurial mercurial-hook

我曾与Git合作完成此任务,但需要Mercurial进行另一个项目。我的Git配方包括post-receive hook,如下所示:

#!/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

对于这个项目,我使用了一个基本的shell脚本来重新启动Node而不是安装上面的node-supervisor。它看起来像这样:

#!/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进程正在运行,所以pkill(all)对我有用。我也在我的repo目录中运行server.js。

1 个答案:

答案 0 :(得分:2)

尝试红豆书的Hooks part。特别是向下滚动到 Hooks Reference 部分可能是有用的,例如:

  

changegroup - 添加远程更改集后