Как применить изменения без доступа к серверу SVN - PullRequest
1 голос
/ 27 мая 2010

Мы используем svn для разработки большого веб-приложения и периодически обновляем обновления. Рабочий сервер не имеет доступа к svn (по соображениям безопасности).

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

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Хорошо, позвольте мне дать шанс. Вы можете проанализировать вывод команды обновления SVN и сгенерировать инструкции копирования, которые копируют только файлы, которые были изменены?

http://svnbook.red -bean.com / о / 1,1 / ch03s05.html

Давайте рассмотрим вывод обновления SVN еще немного. Когда сервер отправляет изменения в вашей рабочей копии, письмо код отображается рядом с каждым элементом сообщить, какие действия Subversion выполняется, чтобы принести вашу рабочую копию уточненный:

U foo

Файл foo был обновлен (получен изменения с сервера).

A foo

Добавлен файл или каталог foo в вашу рабочую копию.

D foo

Файл или каталог foo был Удалено из вашей рабочей копии.

R foo

Файл или каталог foo был Заменено в вашей рабочей копии; тот есть, foo был удален, и новый элемент с тем же именем был добавлен. В то время как они могут иметь одинаковое имя, хранилище считает их отдельные объекты с различными истории.

G foo

Файл foo получил новые изменения из хранилища, но ваш местный копия файла имела ваш модификаций. Либо изменения сделали не пересекаются, или изменения были точно так же, как ваш местный модификации, так что Subversion успешно слил хранилище изменения в файл без проблема.

C foo

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

Или, если вы предпочитаете полуручное решение, вы можете использовать инструмент сравнения, например WinMerge или Araxis Merge , для синхронизации обоих каталогов.

EDIT:

Я не думаю, что "svn update" будет работать точно, но я остановился на:

  • svn оформить заказ текущей (старой) версии продукта
  • svn переключить на ревизию, которая готова для производства (новая версия)

Я написал скрипт для захвата вывода «переключателя». Он переводит операции U и A в «добавления» в zip-архив. Он переводит D-операции для удаления команд, которые должны быть выполнены на рабочем сервере. На рабочем сервере нам просто нужно распаковать архив и запустить команды удаления.

0 голосов
/ 27 мая 2010

Оформите заказ в каталоге на вашей стороне стеклянной стены, сделайте его доступным с рабочего сервера. Используйте какую-либо утилиту diff / sync для синхронизации этих двух файлов, за исключением папок _svn или любых других файлов, которые могут повредить рабочую среду.

Или используйте zip (или другой архив) файлов с «изменениями после mm / dd / yyyy» и примените его к каталогу продукции.

...