Объединить несколько проектов 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).
Другие вопросы по тегам