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

时间:2013-09-09 07:29:02

标签: git svn git-svn git-clone

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

我试过

$ git clone svn://url/svn-root -T trunk -b branches -b branch1 -b branch2

$ git clone svn://url/svn-root -T trunk -b branches -b .

两者都无法正确克隆branch1branch2。请帮忙。

svn-root
├── branch1
├── branch2
├── branches
│   ├── branch3
│   └── branch4
└── trunk

2 个答案:

答案 0 :(得分:6)

GitMinutes Episode 20中提到的一个有趣的工具是SubGitAtalssian Stash的插件(不是免费的,但您可以免费试用)。
您可以在“GitMinutes #22: Alexander Kitaev about SubGit”中了解有关SubGit的更多信息。

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

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

Dmitry Pavlenko comments

  

您应该输入“分支”字段:

*:refs/heads/*;branches/*:refs/heads/branches/* 
# instead of 
branches/* 
  

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

     

或者,如果您拥有有限数量的顶级分支,则可以明确枚举它们:

branch1:refs/heads/branch1;
branch2:refs/heads/branch2;
branches/*:refs/heads/bra‌​nches/*

答案 1 :(得分:0)

有两种选择:

  • 首先清理您的SVN仓库(根据标准布局移动分支下方/分支机构)。
  • 使用标准布局结帐,稍后添加远程分支引用。