Назад | Перейти на главную страницу

Перемещение папки в SVN

Это на Win2k3sp2 с использованием TortoiseSVN 1.6.5 и SlikSVN 1.6.3.

У меня есть папка в репо, назовите ее / a / b, и я хочу, чтобы она стала / a / c / d в том же репо. Я попытался просто переместить папку и переименовать ее, а затем выполнить фиксацию, и, очевидно, это сбивает с толку, потому что папка .svn думает, что она все еще под старым именем, и если это сработает, это вещь с двумя фиксациями, где / a / b удален, а / a / c / d новый, что нехорошо, потому что тогда я теряю историю, прикрепленную к каждому файлу.

Я начал ковыряться и нашел «relocate», который содержит огромное предупреждение и убеждает меня не использовать его. Затем есть «переключение», которое, хотя я думал, что «переместить» было более интуитивным способом описания того, что я хотел сделать, мне показалось подходящим вариантом. Я так и сделал, и это заняло много времени, хотя в / a / b было всего несколько файлов (например, 8 папок, каждая из которых содержала один или два файла), а теперь:

  1. / a / b все еще там
  2. половина папок в / a / b исчезла
  3. остальные папки в / a / b выдают ошибку, когда я пытаюсь заглянуть в них: «/ a / b / e недоступен. Доступ запрещен».
  4. / a / c / b (а не / a / c / d, как я уже сказал!) был создан, но остался пустым
  5. Я попробовал обновить, и теперь некоторые папки вернулись в / a / b, но не все

Тогда мой вопрос состоит из двух частей:

  1. Как мне это очистить?
  2. Как правильно переместить папку, как я описал?

Ваша проблема в том, что вы использовали неправильную команду; «Switch» в точности дополняет то, что вы хотели - он изменяет местоположение репозитория, на которое «указывает» ваша рабочая копия, без изменения репозитория. (Switch тогда фиксация произвела бы некоторые результат, но по-настоящему ломаный, что вы не имели в виду. Ты был прав; заманчиво звучащее «Relocate» является частным случаем «Switch», и его следует избегать по той же причине.)
Затем команда «Обновить» обновила рабочую копию, чтобы она соответствовала тому, что было в репозитории в «новом» месте - ничего!

В Subversion пока нет настоящего перемещения / переименования. Безопасный для подрывной деятельности способ сделать это - скопировать, а затем удалить. TortoiseSVN включает удобную опцию «переместить», которая выполняет копирование и удаление как одну операцию.

Самый простой способ сделать то, что вы хотели:
1. Откройте репо-браузер в TortoiseSVN.
2. Правильно-щелкните и перетащите папку из старого местоположения в новое.
3. В контекстном меню выберите «Переместить».

Это также работает внутри вашей рабочей копии и является безопасным способом Tortoise / Subversion для перемещения или переименования файлов и папок в wc без потери истории.

чтобы ответить на ваш второй вопрос, вот как я перемещаю папки с Tortoise-SVN:

  • щелкните правой кнопкой мыши в проводнике Windows по папке, затем «Tortoise SVN», затем «Repo-browser».
  • в браузере репо, сделайте так, чтобы вы смотрели туда, где находится папка, которую вы хотите переместить.
  • щелкните папку (или файл!), чтобы переместить, и перетащите его на левую панель в нужное место.
  • нажмите ОК, чтобы закрыть браузер репо
  • щелкните правой кнопкой мыши папку и выберите «Обновить».

При обновлении Tortoise SVN удалит папку, в которой она была, и заново создаст ее там, где вы ее переместили.

Для правильного перемещения файлов используйте команда перемещения.

РЕДАКТИРОВАТЬ:
Обратите внимание, move, mv, rename, ren - это псевдонимы для одной и той же команды. Его можно найти в TortoiseSVN в разделе «TortoiseSVN» -> «Переименовать ...» посмотреть здесь

У меня была похожая проблема. Но в моем случае каталоги / a / b и / a / c проверялись отдельно.

это решение с разреженной (частичной) кассой решило проблему.