Назад | Перейти на главную страницу

Автоматическое обновление веб-сайта по SVN отправить?

Допустим, мы управляем сайтом http://example.com и его более новая тестовая версия http://new.example.com с Subversion (SVN).

Было бы неплохо сделать следующее:

Если да, то какое программное обеспечение использовать для обновления сайтов? rsync? Что именно писать в конфигурации SVN?

«Управление сайтом с помощью Subversion» - слишком распространенное и нечистое определение. Как ты справляешься?

  • Рабочие копии находятся на локальных Dev-боксах, репозиторий на каком-то специальном хосте, а сайты - это неверсионные файлы, результат экспортного репо
  • Сайты - это дополнительные рабочие копии репозитория, предназначенные только для обновления.

В любом слючае:

  • Двухуровневая (DEV и PROD) разработка - широко распространенный метод.
  • DEV может отражать состояние магистрали (нет необходимости в дополнительных действиях ветвления и слияния в ветвление), в зависимости от ваш рабочий процесс
  • Общее пространство DEV для команды разработчиков с неуправляемые автоматические обновления имеют серьезный недостаток - это случай глупых изменений хуков после обновления при тестировании разработчика один после фиксации может быть перезаписан следующей фиксацией от другого разработчика два

Ответ на вопрос "какое ПО использовать для обновления сайтов?" зависит от ответа на вопрос «Как управляются сайты» и «Какие методы доступа можно использовать для обновления сайтов». Потому что они (программное обеспечение и метод) могут быть

  • svn up
  • scp
  • ftp
  • rsync

и более или менее сложный хук после фиксации

РЕДАКТИРОВАТЬ

В случае неверсированного дерева, как на том же хосте, что и репо, вы можете использовать его после фиксации.

  • Полный экспорт репо-дерева: svn export file:///<PATH-TO-REPO> <TEMP-DIR> & mv -r <TEMP-DIR> <SITE-ROOT>

или

  • Экспорт только измененных файлов в ревизии: svnlook changed предоставит вам список измененных файлов с относительными путями, которые вы должны собрать и скопировать в правильное место назначения. Образец

>svnlook.exe -r 24 changed .

U trunk/Hello.de.txt

U trunk/Hello.en.txt

U trunk/Hello.fr.txt

Вы должны обработать статусы (первый столбец) A | U (добавлено / обновлено), возможно, также D (удалено)

Цели каждой фиксации (предварительная проверка перед обработкой файлов) можно проверить с помощью svnlook dirs-changed. Для той же ревизии, что и в примере выше

>svnlook.exe -r 24 dirs-changed .
trunk/