подрывная деятельность для онлайн-проектов

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

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

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

Спасибо за отзыв, А.


person pixeline    schedule 07.10.2010    source источник
comment
не могли бы вы повторно принять ответ, на прошлой неделе произошла потеря данных, в результате которой ответ был признан непринятым? Большое спасибо!   -  person CharlesB    schedule 18.10.2010


Ответы (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

person CharlesB    schedule 07.10.2010
comment
Это звучит очень близко к моей настройке: я действительно размещаю репозиторий и веб-сайт на одной учетной записи сервера. Здорово! Но ничего себе: удалить старую часть сайта обязательно? Это 1,5 гига. Я бы предпочел, чтобы он обновлял только то, что изменилось. - person pixeline; 08.10.2010
comment
ничего обязательного, это просто пример, который можно адаптировать! вы можете выполнить обновление svn из временной рабочей копии и подключить свой веб-сайт к нему с исключением .svn - person CharlesB; 08.10.2010
comment
Пожалуйста! вчерашние проблемы с сайтом отменили ваше согласие, не могли бы вы принять его повторно? Спасибо - person CharlesB; 10.10.2010

Обычно это можно сделать с помощью репозиториев svn, особенно крючок post-commit.

person splash    schedule 07.10.2010
comment
Информация о хуках из книги svn: svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-5-sect-2.1 - person Roman A. Taycher; 07.10.2010

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

AliasMatch \.svn /non-existant-page
person Version Control Buddy    schedule 07.10.2010
comment
Интересный подход, использование cronjob для регулярной синхронизации. Спасибо! - person pixeline; 09.10.2010