Сделать рабочую папку SVN идентичной версии репозитория

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

Есть ли очевидный способ сделать экспорт в существующий каталог, чтобы извлекались только файлы, отличающиеся от других, и удалялись файлы, не являющиеся репо, в основном, обеспечивая чистый экспорт, но сделанный разумным способом?

Windows предпочтительнее, но я думаю, что Cygwin вариант.

4 ответа

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

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

Оформить заказ рабочей копии, а затем экспортировать из вашей рабочей копии. Обновление SVN на рабочей копии будет быстрым и легким. Затем вы можете удалить исходный экспорт и реэкспорт из рабочей копии.

Все операции, требующие пропускной способности, оптимизированы. Мощное удаление и повторное создание такое же, как и раньше, но теперь все локально, поэтому должно быть намного быстрее.

Кроме того, у вас есть возможность вносить изменения в экспортированную рабочую копию, но вы можете быть осторожны с этим и учитывать влияние конфликтов при обновлении SVN.

Другой вариант - использовать извлечение и возврат / обновление, а также использовать что-то вроде библиотеки SharpSvn, чтобы создать скрипт, который будет удалять файлы, не контролируемые источником. Таким образом, артефакты сборки, такие как скомпилированный код, будут удалены, а версионные файлы будут возвращены в базовое состояние путем возврата / обновления.

Если у вас много каталогов и файлов, это сканирование может быть медленным, но если вы уверены в том, какие каталоги будут содержать артефакты сборки, можете просто их сканировать.

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

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

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

1. svn update <arbitrary path>(in the working copy)
2. copy <arbitrary path> <build path>
3. find <build path> -type 'd' -name '.svn' (if you would like to remove the .svn hidden files, but they are not going to really hurt the build process)

Некоторые опции для устранения времени копирования от учета времени процесса сборки

  1. Если вы хотите сэкономить время копирования во время процесса сборки, возможно, вы сможете выполнять эту операцию копирования после каждой сборки и svn обновлять копию непосредственно перед сборкой (предположим, что папки.svn сохраняются).

  2. В Linux две папки можно синхронизировать с помощью rsync. Копия сборки может быть сделана, чтобы отразить обновления в первоначальной копии.

  3. В Windows есть несколько инструментов для достижения синхронизации, предложенных выше. Я не использовал их, но предоставлю вам ссылки, чтобы попробовать сами.
    http://lifehacker.com/326199/synchronize-folders-with-synctoy-20 http://www.techsupportalert.com/best-free-folder-synchronization-utility.htm

Другие вопросы по тегам