Каталог subgit import и несколько филиалов
Я пытаюсь сделать импорт с использованием subgit. Просто разовая миграция. Моя структура SVN содержит:
- ветви
- branch1
- функции
- branch2
- исправления
- branch3
Я хотел бы преобразовать все три ветви в git. Я пробовал:
proj=myproject; subgit import --svn-url <correctPath>/$proj --authors-file
~/authors --branches branches --branches branches/features
--branches hotfixes --tags tags $i
Похоже, что это просто использовать "исправления" в качестве единственного места для импорта из. (Я использую SubGit версии 2.0.2 ('Patrick') build #2731.) Я также попытался использовать:
--branches "branches;branches/features;hotfixes"
Но это полностью провалилось (вероятно, он искал каталог с точкой с запятой в нем).
Любое предложение для одноразового импорта?
(Обратите внимание, я видел этот связанный вопрос.)
1 ответ
Вы можете использовать комбинацию команд 'configure' + 'install' + 'uninstall'. Я полагаю, ваш репозиторий имеет следующую структуру:
$ svn ls --depth infinity <SVN_URL>
branches/
branches/branch1/
branches/branch2/
branches/features/
branches/features/feature1/
branches/features/feature2/
hotfixes/
hotfixes/hotfix1/
hotfixes/hotfix2/
tags/
tags/tag1/
tags/tag2/
trunk/
Затем сделайте следующее. Запустите команду 'configure':
$ subgit configure --svn-url <SVN_URL> repo
Отредактируйте файл repo/subgit/config в этой структуре хранилища (или вы можете придумать свои собственные пространства ссылок / заголовков / имен, единственное требование: они не должны быть одинаковыми для разных типов веток; если вам нужен одноразовый импорт и все в refs/глав /*, вы можете переименовать их позже с помощью скрипта):
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
branches = branches/features/*:refs/heads/features/*
branches = hotfixes/*:refs/heads/hotfixes/*
tags = tags/*:refs/tags/*
shelves = shelves/*:refs/shelves/*
Запустите команду 'install':
$ subgit install repo
Затем, если вы запустите "git branch -a" из каталога "repo", вы увидите что-то вроде этого:
$ git branch -a
branch1
branch2
features/feature1
features/feature2
hotfixes/hotfix1
hotfixes/hotfix2
* master
При желании вы можете запустить команду "удалить", чтобы отключить синхронизацию временно или навсегда (опция --purge)
$ subgit uninstall [--purge] repo