Mercurial. Автоматическое обновление проекта при помощи хуков
После того как мы переехали с Subversion на Mercurial, нам осталось перевести svn'овские хуки для "деплоя" проекта. Для продакшена мы будем делать update головы бранча "EXAMPLE", то есть самого главного бранча.
Напоминаю, путь до hg репозитория - "/var/hg", имя проекта - "EXAMPLE", а имя вашего пользователя - "USER1".
Подготовка проекта и настройки
В предыдущей статье вы должны были настроить Mercurial и инициализировать проект. Так как у нас каталог проекта "/home/USER1/projects/EXAMPLE" и плодить две рабочие копии на одном сервере не хочется, то:
- переместим репозиторий в каталог наших рабочих проектов
- назначим символическую ссылку в "/var/hg/repos" на каталог рабочего проекта
mv /var/hg/repos/EXAMPLE /home/USER1/projects/EXAMPLE ln -s /home/USER1/projects/EXAMPLE /var/hg/repos/EXAMPLE
Хук changegroup
Теперь создадим каталог для хуков, создадим сам хук и отредактируем конфиг:
mkdir /home/USER1/projects/EXAMPLE/.hg/hooks touch /home/USER1/projects/EXAMPLE/.hg/hooks/changegrouphook chmod +x /home/USER1/projects/EXAMPLE/.hg/hooks/changegrouphook emacs /home/USER1/projects/EXAMPLE/.hg/hgrc
Приведем конфиг к такогому виду:
[hooks] changegroup = /home/USER1/projects/EXAMPLE/.hg/hooks/changegrouphook
Хук "changegroup" активируется, когда вызываются команды push/pull/unbundle, и только единожды, в отличии от хука "commit", который вызывается на каждый "changeset".
Приведите содержимое файла хука "changegrouphook" к виду:
cd /home/USER1/projects/EXAMPLE && /usr/local/bin/hg update EXAMPLE
Более подробно о хуках можете почитать на странице оф. документации и на странице книги Bryan O'Sullivan "Mercurial: The Definitive Guide".
Комментарии
в любом случае сейчас работает только в режиме шаманства а не с двух кликов :)
Pandora, разъесни свою точку зрения :)
я тоже задумывался по поводу первого вопроса, еще с хука для свн... И решил проверить на свн, сделал одним коммитом заливку 4 копий зендфреймфорка ~4k файлов, что то пошло нет так :)
Странно, магия? :)
Подумываю перейти на Git =) там синхронизация файлов интерактивнее
Я пользуюсь Git'ом 4 месяца и только его и рекомендую всем, надо в честь него пост накатать )
Хорошая статья. В случае с drupal , обновления базы через php выполняется всё работает хорошо, только в changegrouphook чуть другая команда
hg update --clean --cwd /home/user1/EXAMPLE
а вот git как-то не прижился.
Оставьте свой комментарий