Как заменить каталог в репозитории SVN, не нарушая ничего
Мне нужно заменить каталог в моем репозитории SVN на производственном сервере, но я не уверен в правильном способе сделать это, не нарушая ничего. Заменяемый каталог является версией сторонней версии модуля, которая была полностью реструктурирована, поэтому для того, чтобы выполнить обновление, мне нужно удалить старый каталог/файлы и заменить его новым каталогом и файлами. Когда я это делаю (используя svn delete), рабочая копия становится затрудненной или в состоянии, которое мешает мне совершить или добавить новый, неверсированный каталог в рабочую копию. Я пробовал обновление svn, svn cleanup, а также другие исправления для UI (TortoiseSVN и Cornerstone), но, похоже, не могут синхронизироваться, что не сводится к предыдущей ревизии или проверке новая копия.
Я считаю, что целевой каталог как для локальной рабочей копии, так и для удаленного репо должен быть удален, обновлена рабочая копия, новый каталог добавлен в рабочую копию и затем передан в репо; но я не уверен в специфике или каких-либо недостающих шагах или тонкостях, которые могут отсутствовать. Модуль, который я обновляю, очень важен для приложения сайта, поэтому мне нужно сделать это правильно в первый раз - так как это делается на производственном сервере - и это нужно сделать быстро. Если бы кто-то мог четко отобразить шаги, я бы очень признателен.
Ответы
Ответ 1
Чтобы сделать это проще, вы можете сделать это таким образом, чтобы создать единую "сломанную" версию, где каталог не существует.
-
svn up
, чтобы обновить рабочую копию.
-
svn delete <directory>
, чтобы избавиться от текущего каталога
-
svn commit -m 'Deleted old module'
- Скопировать в новый каталог рабочей копии
-
svn add <directory>
, чтобы добавить новую структуру каталогов
-
svn commit -m 'Added new module'
Этот вопрос содержит сведения о том, как использовать "Vendor Branches", что может оказаться лучшим решением для вашей ситуации.
Ответ 2
Это прямолинейно, используя TortoiseSVN RepoBrowser. Просто удалите старую папку, а затем перетащите новую папку.
Ответ 3
Если вам действительно нужна структура каталогов для обновления в одном коммите, вы можете использовать WinMerge:
- Сравнивать два дерева рекурсивно, используя SVN-фильтр, чтобы избежать сравнения .svn-каталогов
- Удалите файлы и каталоги, которые не существуют в новой структуре, из вашего WC
- Добавьте файлы и каталоги, которые существуют только в новой структуре, в ваш WC
- Замените все файлы, которые существуют в обеих структурах, с новыми в вашем WC
- совершить