Подтвердить что ты не робот

Разделить хранилище Subversion в несколько хранилищ Mercurial?

Мы переходим из Subversion в Mercurial и сталкиваемся с проблемой в процессе преобразования SVN- > Hg. Прямо сейчас, наш единственный SVN-репо содержит код для пары отдельных "проектов", и мы хотели бы разделить их на части процесса миграции. Наш репо SVN организован как:

.
|-- proj1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- proj2
    |-- branches
    |-- tags
    `-- trunk

и мы хотели бы просто сделать proj1 и proj2 свои собственные репозитории Hg. Конечно, мы бы хотели, чтобы в журнале proj2 не отображалась история, характерная для proj1. Прямо сейчас, когда hg convert делает преобразование, он просто читает все файлы довольно тупо, даже не выделяя ветки из сундуков.

Каков процесс фильтрации по каталогу и распознавания ветвей SVN в hg convert?

4b9b3361

Ответ 1

Теперь у меня это работает, благодаря странице ConvertExtension wiki!

Я попробовал метод Ry4an, но он пришел с недостатками, заключающимися в том, чтобы сначала преобразовать SVN-репо в промежуточное репозиторию Mercurial, прежде чем раскалывать все, и что ветки, туловище и теги не распознаются, потому что есть два проекта каждый с их собственными ветвями, туловищем и тегами.

Я обнаружил, что вручную указание каталога ветвей, туловищ и тегов отлично поработало для преобразования одного проекта из SVN в Mercurial за раз:

hg \
--config convert.svn.trunk=proj1/trunk \
--config convert.svn.branches=proj1/branches \
--config convert.svn.tags=proj1/tags \
convert --authors authors.txt original-svn-dir hg-proj1

Это будет учитывать распознавание ветвей SVN, тегов и соединительных линий и фильтра только для версий proj1 в одно и то же время. Затем я просто повторил его для proj2.

Ответ 3

Это легко сделать, используя расширение 'convert', как вы предложили. Здесь процедура:

  • сделать a hg convert SVNREPO all-in-one-mercurial-repo от svn до mercurial со всем
  • выполнить несколько команд hg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repo - по одному на проект

В этих файлах есть строки:

exclude proj1
rename proj2 .

Это будет использовать filemap при извлечении всего двух проектов репо из универсального репозитория all-in-one. Возможно, вам нужно будет указать каждый отдельный файл на этих картах, но я думаю, что каталоги в порядке.

Здесь еще один вопрос о SO, где я ответил почти то же самое и вставлял в полный пример, но этого должно быть достаточно, чтобы вы пошли.