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

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

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

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

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

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

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

Спасибо!

Ответ 2

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

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

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

Ответ 3

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

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

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

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