Я работал с 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 прямо из моего каталога репо.