3

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

4

1 回答 1

2

试试 Red Bean 书中的Hooks 部分。尤其是向下滚动到Hooks Reference部分可能会有用,例如:

changegroup— 添加远程变更集后

于 2012-03-12T00:19:18.630 回答