Как заменить каталог в репозитории SVN, ничего не нарушая - PullRequest
10 голосов
/ 14 апреля 2011

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

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

Ответы [ 3 ]

10 голосов
/ 14 апреля 2011

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

  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'

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

2 голосов
/ 05 декабря 2011

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

1 голос
/ 14 апреля 2011

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

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