我曾与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。