Как я могу исправить проект Subversion, где я пропустил trunk?

У меня есть проект в subversion, называемый inboundem. Это был мой первый, и когда я его создал, я опустил сундук. Мне нужно перевести его в правильную структуру как inboundem/trunk. У меня был другой проект вроде этого, но поскольку изменений не было, я сделал svn delete, а затем svn import, и это сработало хорошо. Но у меня много изменений с inboundem, и я не хочу потерять историю.

Я не могу сделать svn move, так как svn не позволит мне переместить проект в себя.

Я подозреваю, что мне нужно спуститься по пути svnadmin dump/load, поэтому я сделал:

svnadmin dump /subversion/active | svndumpfilter include inboundem > inboundem.dump

и это создало файл дампа со всей моей историей для inboundem. Но что мне теперь делать?

Я подозреваю, что должен сделать svn delete и удалить проект, а затем вручную отредактировать файл дампа и изменить Node -path всюду от inboundem до inboundem/trunk, а затем сделать

svnadmin load /subversion/active < inboundem.dump

Это безопасно? Есть ли более простой способ? Возможно, мне нужно просто переборщить его и проверить все версии один за другим, удалить проект, а затем воссоздать ревизию проекта по версии.

Ответ 1

svn mv svn://repo/inboundem svn://repo/trunk
svn mkdir svn://repo/inboundem
svn mv svn://repo/trunk svn://repo/inboundem/trunk

Ответ 2

Почему бы просто не создать папку в корне проекта с именем "trunk", а затем переместить все файлы/папку в корень в эту папку?

Я делал это раньше в Tortoise, я не уверен, что подкладывает команду, потому что вы говорите, что svn move не будет работать для вас. Может быть, попробуйте скопировать, а затем удалить?

Ответ 3

Вы можете использовать экспорт svn, а затем переместить экспортированный источник в /trunk, а затем зафиксировать изменения (добавив новые папки в /trunk )

И затем удалите (и вызовите delete) в старых папках, все равно будет история их восстановления, если вам нужно, но она восстановит их в старой папке, а не в новой соединительной линии. Весь экспорт svn делает перемещение выбранных директорий (ов) в новое место без папки .svn, поэтому он действует так, как будто это не рабочая копия, и оттуда вы можете добавить ее в свою рабочую копию.