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