2009-05-07 5 views
2

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

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

Спасибо!

ответ

3

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

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

самосвала Doc: http://svnbook.red-bean.com/en/1.1/re31.html нагрузки Doc: http://svnbook.red-bean.com/en/1.0/re36.html

+1

Если добавить «-parent-Dir ствол», чтобы загрузить svnadmin он будет переносить все файлы в багажнике subsdirectory хранилища –

0

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

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

2

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

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

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

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

+0

Почему не только SVN мв my.server/СВН/репо/my.server/СВН/repos/trunk/-m «Перемещено» – Stefan

+1

@Stefan: вы не можете переместить родительский каталог (= корень репозитория) в его подкаталог, так как это даст вам ошибку. –

1

Вы не потеряете историю, если используете svn mv файлы. История будет сохранена. Таким образом, вы можете использовать svnadmin load -parent-dir trunk для повторной настройки вашего репозитория, но вам нужно будет делать свежие проверки всего, так как в новом репозитории вы должны иметь новый 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'