Как обновить и перезапустить приложение Node с Mercurial после нажатия? (Эквивалент git post-receive в hg) - PullRequest
3 голосов
/ 12 марта 2012

Я работал с 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, которое будет следить за изменениями файлов и перезапускать Node после изменения git push / file.

Мой вопрос: как лучше всего это сделать с помощью Mercurial? Я рассмотрел хук changegroup как похожую альтернативу, но я не могу найти примеры хуков. Спасибо!


Обновление: Моя реализация

За ответ и комментарий ниже я пошел с крючком changegroup. В частности, в myrepo/.hg/hgrc я использовал:

[hooks]
changegroup = hg update && /path/to/restart/script.sh

Я пошел с базовым сценарием оболочки для перезапуска 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 (все) работает для меня. Я также запускаю server.js прямо из моего каталога репо.

1 Ответ

2 голосов
/ 12 марта 2012

Попробуйте Часть крючков из книги "Красная фасоль". Особенно полезна прокрутка до части Hooks Reference , например ::10000*

changegroup - после добавления удаленных наборов изменений

...