如何克隆非标准的svn repo到git?

kan*_*yin 5 svn git git-svn git-clone

我尝试将svn repo克隆到git,但是一些分支在svn根目录中,如下所示.

我试过了

$ git clone svn://url/svn-root -T trunk -b branches -b branch1 -b branch2
Run Code Online (Sandbox Code Playgroud)

$ git clone svn://url/svn-root -T trunk -b branches -b .
Run Code Online (Sandbox Code Playgroud)

两者都未能克隆branch1branch2正确.请帮忙.

svn-root
??? branch1
??? branch2
??? branches
?   ??? branch3
?   ??? branch4
??? trunk
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 6

GitMinutes第20集中提到的一个有趣的工具是SubGit,它是Atalssian Stash的插件(它不是免费的,但你可以免费试用).
您可以在" GitMinutes#22:Alexander Kitaev关于SubGit "中了解更多有关SubGit的信息.

它旨在管理非传统的svn repo布局.

http://subgit.com/img/stash/105_repository_layout.png

德米特里·帕夫连科 评论道:

你应该进入"分支"字段:

*:refs/heads/*;branches/*:refs/heads/branches/* 
# instead of 
branches/* 
Run Code Online (Sandbox Code Playgroud)

在这种情况下branch1将被翻译为refs/heads/branch1,
branch3--- refs/heads/branches/branch3.

或者,如果您具有有限数量的顶级分支,则可以显式枚举它们:

branch1:refs/heads/branch1;
branch2:refs/heads/branch2;
branches/*:refs/heads/bra??nches/*
Run Code Online (Sandbox Code Playgroud)