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 крюк.

  1. Создайте рабочую копию (локальную копию) хранилища / веб-сайта на своем веб-сервере, выполнив проверку svn.
  2. Вы можете настроить задачу в cron/ планировщике (в зависимости от linux/windows). Задача может сделать svn-обновление в вашей рабочей копии. Это может быть сделано каждые несколько минут / часов, в зависимости от частоты ваших коммитов.
  3. Направьте свой веб-сервер не отображать.svn dirs. В случае apache, вы можете включить следующие строки в ваш httpd.conf (в IIS тоже должен быть способ, дайте мне знать, если вам это нужно для windows)
<DirectoryMatch \.svn>
   Order allow, deny
   Deny from all
</DirectoryMatch>

AliasMatch \.svn /non-existant-page
Другие вопросы по тегам