Subversion для онлайн-проектов
Я начал использовать Subversion, чтобы отслеживать - и иметь возможность обратить вспять - изменения нашего сайта, связанные с его разработкой и обслуживанием. Любить это чувство безопасности это обеспечивает!
Я хотел бы знать, существует ли инструмент / способ, позволяющий автоматизировать синхронизацию между "живым" веб-сайтом и хранилищем Subversion. Было бы замечательно иметь возможность как зафиксировать исправление ошибки в репозитории, так и в реальной версии (сейчас я вручную загружаю через ftp исправленный файл, а затем фиксирую его в хранилище subversion).
Я уверен, что это должно где-то существовать, но под каким именем? Какая настройка ему нужна?
Спасибо за ваш отзыв, А.
3 ответа
Вы можете создать хук после фиксации, который будет экспортировать ваш репозиторий с последней версией в каталог вашего веб-сервера:
#!/bin/sh
# Delete Old site
rm -R /var/www/website
# Export Repository
svn export --force file:///var/svn/website /var/www/website
# Make sure Apache Owns the website
chown -R www-data:www-data /var/www/website
(кредиты на эту ветку форума)
Сохраните это в файле с именем post-commit
, в hooks
каталог вашего репозитория, и сделайте его исполняемым.
Если репозиторий и веб-сайт не находятся на одном и том же сервере, вы хотите экспортировать их во временный каталог, а затем отправить его через ftp или scp.
РЕДАКТИРОВАТЬ: нашел также этот модуль Perl, который может сделать работу: SVN:: Notify:: Mirror
По сути, вы можете сделать это с помощью хуков хранилища SVN, особенно post-commit
крюк.
- Создайте рабочую копию (локальную копию) хранилища / веб-сайта на своем веб-сервере, выполнив проверку svn.
- Вы можете настроить задачу в cron/ планировщике (в зависимости от linux/windows). Задача может сделать svn-обновление в вашей рабочей копии. Это может быть сделано каждые несколько минут / часов, в зависимости от частоты ваших коммитов.
- Направьте свой веб-сервер не отображать.svn dirs. В случае apache, вы можете включить следующие строки в ваш httpd.conf (в IIS тоже должен быть способ, дайте мне знать, если вам это нужно для windows)
<DirectoryMatch \.svn> Order allow, deny Deny from all </DirectoryMatch> AliasMatch \.svn /non-existant-page