Хорошо, позвольте мне дать шанс. Вы можете проанализировать вывод команды обновления 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-операции для удаления команд, которые должны быть выполнены на рабочем сервере. На рабочем сервере нам просто нужно распаковать архив и запустить команды удаления.