Вложенные ветви, переменная глубина - PullRequest
1 голос
/ 23 мая 2019

У нас есть большой, довольно старый SVN-репозиторий, который мы хотели бы перенести в git.К сожалению, наша отраслевая структура довольно сложна;у него есть вложенные ветви различной глубины, некоторые ветви располагаются рядом с вложенными папками:

branches/
         branch1/
         branch2/
         teams/
               team1/
                     projectBranch1
               team2/
                     projectBranch2

В моем git-конфиге я пробовал

branches = branches/*/*/*:refs/remotes/origin/*/*/*

, который прекрасно импортировал ветви команды,но при получении обновлений для "branch1" он обрабатывает первые несколько каталогов проекта как часть имени ветви, создавая ветви как branch1/src/com/.Затем я попытался:

branches = branches/teams/*/*:refs/remotes/origin/teams/*/*
branches = branches/*:refs/remotes/origin/*

, надеясь, что коммиты в командные проекты будут сопоставлены первыми, а подстановочный знак первого уровня используется только для веток верхнего уровня.Но затем он возвращается к обработке ветвей команд как подкаталогов ветви «команд».Затем я надеялся, что изменение порядка терминов в файле конфигурации может изменить порядок сопоставления, но это, похоже, не имеет значения.

Мне удалось получить чистую миграцию из последних ревизий, настроивподстановочный знак верхнего уровня для соответствия только определенным именам, так что нет никакой двусмысленности между двумя branches терминами.Но в идеале я хотел бы перейти со старых версий, где имена веток верхнего уровня менее легко выбираются.Можно ли как-нибудь убедить git-svn сопоставить записи branches, используя правило "наиболее специфичный первый"?

1 Ответ

1 голос
/ 25 мая 2019

Я рекомендую попробовать SubGit для вашего макета: он может (?) Обрабатывать более сложные случаи , чем git-svn

branches = branches/*:refs/heads/*
branches = feature_*:refs/heads/features/*
branches = hotfix/*_*:refs/heads/hotfix/*/*

Обратите внимание на использование подстановочных знаков на удаленноми локальные части и переводы в разные пространства имен для разных путей svn-ветвей

даже исторических перемещений и переименований

Если я правильно понял ваше дерево ветвей, т.е.в то же время

branches/branch*/
…
branches/teams/team*/projectBranch*

ваше отображение SubGit может выглядеть примерно так (TBT!)

branches = branches/*:refs/remotes/origin/*
branches = teambranches/*-*:refs/remotes/origin/teams/*/*
...