2014-01-21 3 views
0

У нас есть несколько репозиториев SVN в конкретном физическом месте /mnt/data1/reposРазъяснения по консолидации несколько Repòs Svn

И РЕПО в структуре, как показано ниже

repos 
    | 
    App1 
     | 
     trunk 
       | 
       module1 
       | 
       module2 
     | 
     branches 
    | 
    App2 
     | 
     trunk 
       | 
       module1 
       | 
       module2 
     | 
     branches 
    | 
    App3 
     | 
     trunk 
       | 
       module1 
       | 
       module2 
     | 
     branches 

Мы пытаемся объединить несколько сделок РЕПО в одном репо как ниже по другому пути /mnt/data2/repo

 repo 
    | 
    trunk 
     | 
     App1 
      | 
      module1 
      | 
      module2 
     | 
     App2 
      | 
      module1 
      | 
      module2 
     | 
     App3 
      | 
      module1 
      | 
      module2 

Я создал репозиторий с помощью svnadmin на /mnt/data2/repo

/mnt/data2/repo/trunk/App1 создания каталогов, /mnt/data2/repo/trunk/App2 & /mnt/data2/repo/trunk/App3 с использованием svn mkdir.

Затем я попытался сделать svn dump из app1 /mnt/data1/repos/App1/, фильтровать его с помощью svndumpfilter с include trunk и сделал svn import к /mnt/data2/repo/trunk/App1. Он не сработал, так как /mnt/data2/repo/trunk/App1 не является корнем репо.

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

Edit:

я выполнил следующие действия.

svnadmin dump --quiet /mnt/data1/repos/App1 > App1.dmp 
svndumpfilter include --targets /tmp/list.txt <App1.dmp> App1Trunk.dmp 
svnadmin create /mnt/data2/repo/ 
svn mkdir --parents svn://<IP>:<PORT>/trunk/App1 -m "Creating MC directory" 
svnadmin load --quiet --parent-dir trunk/App1 /mnt/data2/repo < App1Trunk.dmp 

Когда я попытался загрузить дамп я обнаружил, что она по-прежнему создает trunk/App1/trunk/module1, trunk/App1/trunk/module2 и т.д. Помогите мне в загрузке данных в trunk/App1/moudle*.

+1

Возможный дубликат [Перемещение данных хранилища SVN с историей как вложенными папками в другой репозиторий] (http://stackoverflow.com/questions/11563031/moving-svn-repositories-data-with-history-as-subfolders-into- другой-репозиторий) – bahrep

+0

Спасибо за указание на этот ответ. Но когда я пытаюсь импортировать отфильтрованный дамп, он терпит неудачу. Позвольте мне попробовать с 'svnadmin import' с' --parent-dir' и обновить – pprakash

+0

, нет команды 'svnadmin import'. Какие ошибки вы получаете при импорте фильтрованного дампа? – bahrep

ответ

1

Самый простой способ заключается в использовании svn mv для перемещения вещей вокруг:

$ svn mv --parents $URL/repos/App1/trunk/module1 $URL/repos/trunk/App1/module1 

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

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

+0

Спасибо. С комбинацией 'svnadmin dump',' svndumpfilter', 'svn load' и' svn mv' мне удалось успешно создать требуемую структуру. – pprakash

 Смежные вопросы

  • Нет связанных вопросов^_^