Git 嵌套分支,可变深度

Git 嵌套分支,可变深度,git,git-svn,Git,Git Svn,我们有一个非常古老的大型SVN存储库,我们希望将其迁移到git。不幸的是,我们的分支结构相当复杂;它具有不同深度的嵌套分支,一些分支位于嵌套文件夹旁边: branches/ branch1/ branch2/ teams/ team1/ projectBranch1 team2/ projectBra

我们有一个非常古老的大型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/*
希望首先匹配对团队项目的提交,并且第一级通配符仅用于顶级分支。但它随后又将团队分支视为“团队”分支的子目录。然后,我希望颠倒配置文件中术语的顺序可能会改变匹配顺序,但这似乎没有什么区别


通过调整顶级通配符,使其仅与某些名称匹配,我成功地从最近的修订版中获得了一个干净的迁移,这样两个
分支
术语之间就不会有歧义。但理想情况下,我希望从较旧的修订版迁移,因为在这些修订版中,顶级分支名称不太容易识别。有没有办法说服git svn使用“最具体的优先”规则匹配
分支
条目?

我建议您在布局中尝试使用SubGit:它可以(?)处理,而不是git svn

branches = branches/*:refs/heads/*
branches = feature_*:refs/heads/features/*
branches = hotfix/*_*:refs/heads/hotfix/*/*
注意在远程和本地部件上使用通配符,并将svn分支的不同路径转换为不同的名称空间

甚至

如果我正确理解了你的树枝,也就是说,你在同一时间

branches/branch*/
…
branches/teams/team*/projectBranch*
您的子Git映射可以是(TBT!)


仔细重读,注意(复杂配置的示例除外)还有“也可以通过使用括号中逗号分隔的名称列表来获取分支或标记的子集…”HTHYeah,我看到了,这在我的潜在解决方法列表中。问题是,这种混乱是如此蔓延,手动指定分支名称将是一项主要任务。如果有办法强制执行最具体的第一条规则,我可以使用通配符来减少这种工作量。还是谢谢你!
branches = branches/*:refs/remotes/origin/*
branches = teambranches/*-*:refs/remotes/origin/teams/*/*