【发布时间】:2012-03-12 00:13:14
【问题描述】:
我之前曾使用 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。
【问题讨论】:
标签: node.js mercurial mercurial-hook