Как заменить каталог в репозитории 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
  • совершить