Я допустил ошибку при создании репозитория Subversion без обычных каталогов trunk
, branches
и tags
. То есть корневой каталог проекта сопоставляется с корневым каталогом репозитория. Теперь я хочу создать ветвь функции, но там нет хорошего места. То, что я хотел бы сделать, - переместить /
в /trunk
, сохранив его свойства и историю. Мне повезло?
Есть ли чистый способ перемещения/в/сундук?
Ответ 1
Чистый способ сделать это - использовать svnadmin
, чтобы выгрузить весь репозиторий, используя
svnadmin dump
Затем создайте новый репозиторий с каталогом соединительных линий в корневом каталоге и перезагрузите дамп с помощью
svnadmin load --parent-dir trunk
Если вы выполняете движение svn, это может повредить вещи, если вы когда-либо обновляете до пересмотра перед перемещением, так как файлы возвращаются в предыдущее местоположение, что, вероятно, не то, что вы хотите.
Ответ 2
Использовал оттуда ответ, который работал нормально, но хотел добавить команды, включая параметры, т.е. как выполненные в командной строке svn server:
-
Dump ваш существующий репозиторий в файл:
svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump
-
Create новый репозиторий:
svnadmin create /path/to/mynewrepo/
-
Add папка
trunk/
и commit, в каталоге рабочей копии:mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder"
-
Load dumpfile в новый репозиторий с помощью
trunk
какparent-dir
svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump
Ответ 3
Вам нужно создать /trunk
и выполнить svn-перемещение всего содержимого корня внутри соединительной линии и затем зафиксировать.
После этого вы будете switch
вашей рабочей копии на /trunk
.
Ответ 4
Самый простой способ - создать каталог "trunk", а затем переместить в него все остальное. Вам придется копировать любые свойства вручную, но это не должно быть большой проблемой. История - это файл, поэтому он должен оставаться.
Другая проблема, которую следует рассмотреть, - открыть ли кто-нибудь другой открытый репозиторий. Слишком сложно объединиться, поэтому убедитесь, что у всех есть свои изменения, прежде чем вы это сделаете.
Ответ 5
Не могли бы вы создать резидентный порт и переместить все из/в магистраль?
Ответ 6
Как следует из других ответов, это сделает svn mv в каталоге trunk. Чтобы обновить рабочую копию, ознакомьтесь с командой svn switch.
Ответ 7
Нет, просто создайте папку trunk
и переместите все содержимое этого корня в нее. Вы можете сделать это из проводника или через репо-браузер, история сохранится.
Ответ 8
Есть некоторые проблемы или ограничения с некоторыми из обсуждаемых подходов. В приведенной ниже статье обсуждается другой подход, который предполагает сброс репо и редактирование путей к файлам. Это имеет то преимущество, что перемещенные файлы также будут правильно изменены.
http://dotslashstar.blogspot.com/2011/06/svn-hack-insert-missing-trunk-root.html
Ответ 9
Быстрый пример того, как я это сделал.
Я хотел переместить file:///svn/myRepo
в file:///svn/myRepo/trunk
cd /
svnadmin dump /svn/myRepo > my.dump
killall svnserve
sudo rm -r -f /svn/myRepo
svnadmin create /svn/myRepo
svnserve -d -r /svn
svn mkdir file:///svn/myRepo/trunk -m "Created trunk dir"
svnadmin load /svn/myRepo --parent-dir trunk < my.dump