5

我尝试将 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
4

2 回答 2

6

GitMinutes Episode 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/* 

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

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

branch1:refs/heads/branch1;
branch2:refs/heads/branch2;
branches/*:refs/heads/bra‌​nches/*
于 2013-09-09T07:57:26.170 回答
0

想到两个选择:

  • 首先清理您的 SVN 存储库(将分支移动到 /branches 下,它们应该根据标准布局放置)。
  • 使用标准布局结帐,稍后添加远程分支引用。
于 2013-09-09T07:39:23.327 回答