Настройка SVN с двумя клиентами и одним сервером для работающего сайта

Настройка SVN с двумя клиентами и одним сервером для работающего сайта

Я работаю с клиентом, у которого есть выделенный сервер Plesk на базе Linux. Сайт (скажем example.com) работает, и поскольку обычно требуются огромные изменения, очень сложно заставить их работать непосредственно в режиме реального времени. На сервере не было SVN, только FTP.

Я создал поддомен staging.example.comи поместил туда файлы через FTP, чтобы клиент мог видеть изменения до того, как сделать их доступными. Излишне говорить, что для меня это адская боль — помнить каждый файл, связанный с каждой задачей, загружать и тестировать на промежуточном сервере, а затем снова вспоминать, что это были за файлы, и делать это снова для живого сервера. Я несколько раз «успешно проваливал» это, делая безупречно.

Я хочу использовать SVN сейчас. Мне удалось установить SVN с помощью SSH (у меня есть полный доступ к нему) и репозитория (в /var/www/vhosts/example.com/svn/repos), но дальнейшие настройки кажутся мне неоднозначными. Я хочу, чтобы настройка была такой:

  1. SVN Server (работает на svn.example.com- уже сделано)
  2. «главная» копия в staging.example.com, в /var/www/vhosts/example.com/staging(Не уверен, имеет ли «главная» какое-то конкретное значение в SVN. Я просто имею в виду основную копию)
  3. Рабочий каталог в www.example.com, /var/www/vhosts/example.com/httpdocsчтобы я мог выполнить обновление svn, чтобы мои изменения вступили в силу
  4. Еще один рабочий каталог на моем компьютере, где я буду выполнять настоящую работу.

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

Пожалуйста, объясните мне, как мне этого добиться. Также учтите, что я программист, а не системный администратор, поэтому мой план может иметь некоторые проблемы. Если вы так считаете, пожалуйста, укажите альтернативное решение. Я уже давно использую SVN, но это было только checkout-commit-update-resolve, без настройки. Вот почему мне сейчас нужна помощь.

решение1

Самым простым решением, вероятно, будет просто проверить код (только trunk, без веток и т. д.) в трех местах. Затем вам просто нужно убедиться, что вы делаете "svn up" в нужных папках в нужное время.

Итак, попробуйте следующее (комментарии описывают каждый фрагмент).

#SSH to the server as a user who can modify /var/www/vhosts/...
...

cd /var/www/vhosts/ # Since this is a live server, we need to make the
                    # changeover fast, so work in a new folder. 
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository 
                                                    # into a new folder called
                                                    # "staging".(Change "website"
                                                    # to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"

# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...

cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.   
 # This will make the svn version of the staging site live. Check that it works
 # then do the same with the httpdocs folders.

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

решение2

Расширенная версия ответа ed

Предисловие

Вам необходимо получить некоторые навыки администрирования Subversion, чтобы все работало правильно и понимать процессы, происходящие внутри.

Лицо

У тебя должно быть:

  • Один репозиторий
  • Две ветки (как минимум) в репозитории (например, STAGINGи LIVE)
  • Хук посткоммита со встроенной бизнес-логикой «опубликовать на STAGE или LIVE цели»
  • Три Четыре Рабочие Копии: DEV (ваше локальное рабочее место, привязанное к ветке STAGING), MERGE (ваше локальное рабочее место, привязанное к ветке LIVE), STAGING (на сервере STAGING, привязанное к ветке STAGING), LIVE (на сервере LIVE, привязанное к ветке LIVE)
  • Клиент SVN установлен на STAGING и LIVE

Рабочий процесс:

  • Редактировать код в DEV
  • Фиксация - хук после фиксации обновит WC на ​​STAGING
  • Тестовые изменения на STAGING
  • Слияние в MERGE WC (проверено) изменений из ветки STAGING /эффективное слияние из ветки STAGING в ветку LIVE/
  • Зафиксировать изменения в ветке LIVE — хук после фиксации обновит WC на ​​LIVE с объединенными изменениями (хук может обнаружить такой тип фиксации по ключевому слову в сообщении о фиксации / svnlook log | grep KEYWORD/ или по изменениям в ветке LIVE / svnlook dirs-changed/)

Примечание:

Вместо WC на ​​серверах ssh & svn upможно использовать FTP или scp - меньше Subversion, больше головной боли с обновлением сайтов (удаленные файлы будутнетбыть удалено FTP|scp и процесс в целом кажется более сложным /для меня/)

Связанный контент