Как я могу использовать обработчики после фиксации для копирования зафиксированных файлов в веб-каталог из SVN?

На моем сервере Ubuntu установлены Apache и Subversion. Я использую этот сервер в качестве промежуточного сервера исключительно в целях тестирования. Я использую Apache для размещения веб-приложения и Subversion для хранения версионных копий исходного кода.

Мой текущий рабочий процесс:

  • Внести изменения в файл
  • Зафиксируйте файл в репозитории Subversion
  • Загрузите новый файл через SFTP в общедоступный каталог Apache
  • Просматривайте изменения в моем веб-браузере

Я был бы намного счастливее, если бы мой рабочий процесс был таким:

  • Внести изменения в файл
  • Зафиксируйте файл в репозитории Subversion
  • В фоновом режиме Subversion помещает копию зафиксированного файла в общедоступный каталог Apache
  • Просматривайте изменения в моем веб-браузере

У меня очень мало опыта администрирования серверов, и любая помощь или указатели приветствуются. Я слышал, что перехватчики после фиксации - это то, что мне нужно, и что я могу писать сценарии bash для этого, но я не уверен, с чего начать, и действительно ничего не нашел после довольно большого количества поисков в Google.

Спасибо!


person rmh    schedule 26.09.2008    source источник


Ответы (3)


«Официальный» ответ здесь.

Я управляю веб-сайтом в моем репозитории. Как сделать так, чтобы действующий сайт автоматически обновлялся после каждой фиксации?

person harpo    schedule 26.09.2008

Это можно сделать, но автоматическая отправка каждой фиксации на рабочий веб-сайт - не всегда хорошая идея. Иногда есть другие изменения, которые необходимо внести, и нарушение работы сайта из-за того, что там новый код, но схема базы данных еще не обновлена, просто смущает.

Вместо этого я обычно делаю проверку сервера копией svn, а затем, когда я готов со всем остальным, что должно произойти, я делаю для нее обновление svn.

Но если вы действительно хотите, вы можете поместить команды в триггер после фиксации, который сделает все автоматически за вас. Это может включать запуск сценария миграции на сервере (если он существует для этого изменения), чтобы позаботиться о любых изменениях, не связанных с кодом, которые должны произойти.

person zigdon    schedule 26.09.2008
comment
Мое приложение проверяет схему базы данных при запуске и корректно отображает страницу, недоступную в данный момент, если что-то не в порядке. Не говоря уже о том, что это промежуточный сервер, поэтому я бы хотел, чтобы что-то пошло не так;). Тем не менее, спасибо за ответ. - person rmh; 26.09.2008

Я думаю, что реальный, всеобъемлющий вопрос, который вы должны задать себе - который, возможно, вы уже задавали себе, конечно, - заключается в следующем: «как мне легче всего протестировать свой код перед его развертыванием? "

Я думаю, что хороший ответ - установить Apache в свой блок разработки и запустить его как собственный пользователь, используя корневой каталог и / или путь cgi в /home/richardhenry/src/mywebsite (или где бы вы ни читали свой код).

Таким образом, вы можете протестировать свой код, даже не совершая коммит. В результате вы не будете засорять свой багажник сломанными или бесполезными коммитами. В общем, сохранять независимость независимыми - это хорошая идея (TM).

В качестве альтернативы синхронизируйте веб-сервер с вашим рабочим каталогом с помощью rsync или напишите сценарий, который отправляет ваши файлы из окна разработчика на промежуточный сервер, и добавьте правило Makefile, которое запускает ваш сценарий (или вызывает rsync). Если вы хотите быть действительно навороченным, используйте inotify или другой монитор уведомлений о файлах для автоматического запуска вашего скрипта.

person Jonas Kölker    schedule 25.05.2009