Обновление репозитория Subversion с историей - PullRequest
2 голосов
/ 07 мая 2009

У меня есть старый, но очень важный репозиторий Subversion, для которого я не создал обычную структуру: ствол, ветви, теги. Поэтому все мои файлы для этого хранилища находятся в корне.

Я знаю, как создавать новые папки и перемещать все мои файлы в транке, но если я это сделаю, я потеряю историю своего проекта на 3 года, так как «транк» - новая папка. Так есть ли решение перенести историю всего моего проекта из корневой папки в ствольную папку?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 07 мая 2009

Да. Вы можете использовать дамп svnadmin, который будет выгружать хранилище вместе с историей в файл. Затем вы можете использовать svnadmin load для загрузки файла дампа в папку транка. Как только это будет сделано, удалите файлы из корня.

svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
svnadmin load REPOS_PATH

Dump Doc: http://svnbook.red -bean.com / ru / 1.1 / re31.html Загрузить документ: http://svnbook.red -bean.com / ru / 1.0 / re36.html

2 голосов
/ 07 мая 2009

Вы можете использовать

svn copy http://my.server/svn/repos/ http://my.server/svn/repos/trunk/ \
     -m "Copied"

Чтобы создать копию из корня хранилища (^ /) в trunk / (^ / trunk), сохраняя всю историю, включая историю корневого каталога.

После этого вы можете удалить файлы и подкаталоги в старом каталоге при следующей фиксации.

1 голос
/ 08 мая 2009

Вы не потеряете историю, если будете использовать svn mv файлы. История будет сохранена. Таким образом, вы можете использовать ствол svnadmin load -parent-dir для восстановления вашего хранилища, но вам нужно будет делать новые проверки всего, так как в новом хранилище должен быть новый UUID.

svn co http://example.com/repos/
cd repos
svn mkdir trunk tags branches
svn mv a trunk/a
svn mv b trunk/b
svn ci -m 'Moving project into trunk'
0 голосов
/ 07 мая 2009

По общему признанию, не идеальное решение, но почему бы не создать целый новый репозиторий, содержимое которого представляет собой весь код из старого репозитория, но красиво отформатированный в ствол и т. Д., Сохраняя старый репозиторий полностью отдельным, но делая его только для чтения.

По общему признанию, было бы неприятно помнить, что до даты X вам нужно искать в старом хранилище, а не в новом, если вам нужно знать историю элемента.

...