Лучший способ заменить целое дерево каталогов в Subversion?
В моем проекте Subversion у меня есть несколько каталогов, которые содержат другие проекты с открытым исходным кодом, в которых нуждается мой код. Например, ffmpeg, freetype, matrixssl и некоторые другие.
Каков наилучший способ обновления SVN для хранения последней версии одного из этих проектов?
По сути, я буду делать следующее (на примере ffmpeg):
1) Rename current ffmpeg folder to ffmpeg.old
2) Download new version of ffmpeg from net
3) Make sure it and my code compile and work fine together
4) Update subversion to now hold the "new" version of ffmpeg
5) Delete ffmpeg.old directory tree
5 ответов
Вы можете взглянуть на svnbook и поговорить о ветках поставщиков. Это именно то, что вы пытаетесь достичь
Вы можете использовать svn_load_dirs.pl для замены ваших шагов 1-5. svn_load_dirs.pl также будет отслеживать новые, перемещенные или удаленные файлы.
У меня такая же ситуация с CMake, где я проверяю бинарный выпуск win32 в каталоге наших поставщиков:
branches/
trunk/
vendor/
cmake/
cmake-2.6.0/
cmake-2.6.1/
cmake-2.6.2/
...
Затем я использую svn:externals для ссылки на версию CMake, которую я использую. Упрощает тестирование обновления до новых версий, а также понятно, какую версию CMake я использую.
Все правильно, за исключением того, что вам не нужны шаги 1 и 5 - если шаг 3 не выполнен, отмените изменения, используя функциональность SVN Revert.
Если в некоторых проектах вендоров также используется Subversion, вы можете добавить свойство svn:externals в родительский каталог вашей ветви /trunk.
Взгляните на книгу SVN для более подробной информации.
Я думаю, у вас есть два варианта.
A)
- SVN Удалить все файлы.
- Будьте в курсе и заставить его работать.
- SVN Добавить все файлы.
Pro: Убедитесь, что никакие дополнительные файлы не хранятся, если они отсутствуют в последней версии.
Против: Может быть много времени.
B)
- Загрузите и установите новую версию поверх старой.
- Сделай так, чтоб это работало.
- SVN добавить любые новые файлы.
Pro: Вы можете увидеть, что изменилось в файлах инструмента.
Против: Может закончиться беспорядком. В зависимости от инструмента перезапись может привести к ошибкам.