2010-10-07 3 views
2

Я начал использовать подрывную деятельность, чтобы отслеживать и иметь возможность отменить изменения нашего веб-сайта, связанные с его разработкой и обслуживанием. Любить это чувство безопасности, которое оно обеспечивает!subversion для онлайн-проектов

Я хотел бы знать, будет ли инструмент или способ автоматизировать синхронизацию между «живым» веб-сайтом и репозиторием подрывной деятельности. Было бы замечательно, если бы вы могли совершить исправление ошибок в репозитории и в live-версию (прямо сейчас я вручную загружаю через ftp исправленный файл, а затем передаю его в репозиторий subversion).

Я уверен, что это должно существовать где-то, но под каким именем? Какая настройка нужна?

Благодарим Вас за отзыв, А.

+0

мог вы повторите ответ, на прошлой неделе была потеря данных, которая оставила ответ как не принятый? Большое спасибо! – CharlesB

ответ

3

Вы можете создать post-commit hook, который будет экспортировать свой репозиторий в последней версии в каталог веб-сервера:

#!/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 

(кредиты на this forum thread)

Сохранить в файле post-commit, в каталоге hooks вашего репозитория и сделать его исполняемым.

Если репозиторий и веб-сайт не находятся на одном сервере, вы хотите экспортировать его в временный каталог, а затем нажмите на нее через FTP или УПП

EDIT: нашел также этот PERL модуль, который мог бы сделать работу: SVN::Notify::Mirror

+0

Это звучит очень близко к моей настройке: Я действительно размещаю репозиторий и веб-сайт на той же учетной записи сервера. Большой! Но Вау: часть «удалить старый сайт» является обязательной? Это 1,5 гига. Я предпочел бы, чтобы он обновлял только то, что изменилось. – pixeline

+0

ничего обязательного, это просто пример, который вы можете приспособить! вы можете сделать обновление svn из рабочей копии temp и перенаправить свой веб-сайт к ней с помощью исключения .svn – CharlesB

+0

Спасибо большое Чарльз! – pixeline

2

Основном вы могли бы сделать это с svn repository hooks, особенно post-commit крючок.

+0

Информация о крючках из книги svn: http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-5-sect-2.1 –

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

AliasMatch \.svn /non-existant-page 
+0

Интересный подход, используя cronjob для синхронизации регулярно. Благодаря! – pixeline