我以前曾与 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 / 文件更改后重新启动 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。