Сделать рабочую папку SVN идентичной версии репозитория - PullRequest
0 голосов
/ 06 октября 2010

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

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

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

Ответы [ 4 ]

3 голосов
/ 06 октября 2010

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

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

2 голосов
/ 06 октября 2010

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

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

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

0 голосов
/ 13 октября 2010

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

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

0 голосов
/ 06 октября 2010

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

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

...