【问题标题】:How to update & restart a Node app with Mercurial following a push? (Equivalent of git post-receive in hg)如何在推送后使用 Mercurial 更新和重新启动 Node 应用程序? (相当于 git post-receive in hg)
【发布时间】: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


    【解决方案1】:

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

    changegroup—添加远程变更集后

    【讨论】:

    • 而不是incoming 使用changegroup。如果有人做了一个发送 10 个变更集的 hg pushincoming 挂钩将运行 10 次,但 changegroup 将只运行一次。
    • 谢谢大家!我更新了我的问题以反映我的工作实施。
    猜你喜欢
    • 2012-06-24
    • 2019-02-17
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2013-02-02
    相关资源
    最近更新 更多