Объединить несколько проектов SVN
Я управляю svn-репо для проекта, в котором источник не был импортирован с одним каталогом верхнего уровня. В результате существует около 15 отдельных "проектов" вместо одного. Как я могу объединить их в одну папку, сохраняя историю изменений?
* подсказка: в этом случае svn move не работает.
[править] ой, объединение нескольких SVN-репозиториев в один
3 ответа
Если вам не нужно сохранять всю историю одного из репозиториев, вы можете просто создать новый каталог в репозитории одного проекта, а затем импортировать другой.
Если вы хотите сохранить историю обоих, вы можете использовать svnadmin dump, чтобы выгрузить один репозиторий, и svnadmin load, чтобы загрузить его в другой репозиторий. Номера ревизий будут отключены, но у вас останется история.
Скопировано здесь: http://subversion.tigris.org/faq.html
Может быть, я слишком много работал с молотком распределенного контроля версий, и все, что я вижу на этом этапе, это распределенные гвозди. Но я еще раз должен сказать, что это, вероятно, работа для DVCS.
Я бы попробовал возиться с git-svn или что-то в этом роде. Импортируйте каждый "проект" в свой собственный git-репозиторий, и их git pull друг от друга. Разрешите любые конфликты и, после того, как все будет сделано, импортируйте историю обратно в Subversion.
Но вашей команде может быть лучше использовать распределенный контроль после того, как вы все равно завершите объединение репо...
Вы можете создать новый проект верхнего уровня, который использует svn: externals для указания на все другие проекты и помещает их в соответствующие подкаталоги.
- Разработчикам нужно будет только проверить ваш новый проект верхнего уровня (svn будет автоматически следовать svn: externals и подключать остальных)
- полная история версий будет сохранена, а новые изменения будут автоматически зафиксированы в соответствующем подпроекте
- это займет у вас около 5 минут (создайте новый проект верхнего уровня и запустите
svn propedit svn:externals top_dir
).