Как заменить каталог в репозитории SVN, ничего не нарушая

Мне нужно заменить каталог в моем репозитории SVN на производственном сервере, но я не уверен в правильном способе сделать это, ничего не нарушая. Заменяемый каталог является сторонней версией модуля, которая была полностью реструктурирована, поэтому для корректного обновления мне нужно удалить старый каталог / файлы и заменить его новым каталогом и файлами. Когда я делаю это (используя svn delete), рабочая копия становится заблокированной или находится в состоянии, которое не позволяет мне зафиксировать или добавить новый неверсионный каталог в рабочую копию. Я пробовал svn update, svn cleanup, а также другие ярлыки исправления it для пользовательского интерфейса (TortoiseSVN и Cornerstone), но, похоже, не удается выполнить повторную синхронизацию, то есть без отката к предыдущей ревизии или проверки новая копия.

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

3 ответа

Чтобы сделать это проще, вы можете сделать это так, чтобы создать единственную "сломанную" ревизию, в которой каталог не существует.

  1. svn up чтобы получить вашу рабочую копию в актуальном состоянии
  2. svn delete <directory> избавиться от текущего каталога
  3. svn commit -m 'Deleted old module'
  4. Скопировать в новый каталог в рабочую копию
  5. svn add <directory> добавить новую структуру каталогов
  6. svn commit -m 'Added new module'

Этот вопрос содержит подробную информацию о том, как использовать "Ветви поставщика", что может оказаться лучшим решением для вашей ситуации.

Это просто сделать с помощью RepoBrowser TortoiseSVN. Просто удалите старую папку, затем перетащите новую папку в.

Если вам действительно нужно обновить структуру каталогов за один коммит, вы можете использовать WinMerge:

  1. рекурсивно сравнивать два дерева, используя фильтр SVN, чтобы избежать сравнения каталогов.svn
  2. Удалите файлы и каталоги, которые не существуют в новой структуре из вашего WC
  3. Добавьте файлы и каталоги, которые существуют только в новой структуре, в ваш WC
  4. Замените все файлы, которые существуют в обеих структурах, новыми в вашем туалете.
  5. совершить
Другие вопросы по тегам