将非标准布局svn迁移到git而不会丢失历史记录

时间:2018-04-04 11:45:40

标签: git svn migration

假设我有一个名为XYZProject的svn repo,它有一个主干,它是我的开发基本代码,有3个分支VF1,VF2& VF3及其布局如下所示:

XYZProject 
   ..trunk
   ..VF1
      ..trunk_vf1
   ..VF2
      ..src
      ..doc
   ..VF3
      ..doc_vf3, 
      ..trunk_vf3 
      ..src_vf3

使用git-svn工具和命令是:

git svn clone -r623:HEAD http://svnURL/XYZProject --username barodia -T trunk -b VF1 -b VF2 -b VF3 --authors-file=authors.txt --no-minimize-url

它创建了VF1,VF2和VF3中存在的子文件夹的分支,如下所示:

$ git branch -a
*master
trunk
trunk_vf1
src
doc
doc_vf3
trunk_vf3
src_vf3

这意味着在svn clone期间它会在我的本地创建路径,如下所示:

origin/trunk
origin/trunk_vf1
origin/src
origin/doc
origin/doc_vf3
origin/trunk_vf3
origin/src_vf3

但我希望VF1,VF2,VF3的分支如下所示:

$ git branch -a
*master
trunk
VF1
VF2
VF3

任何帮助都会很棒。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我自己没有使用它,但这可能是其他非标准布局的替代方案: https://github.com/nirvdrum/svn2git

使用情况页面显示了支持的布局样式列表。

修改 这可能适合你:

require

这个想法是不将root作为trunk,而是作为branch dir。 请参阅svn2git Options Reference并考虑添加svn2git http://svnURL/XYZProject --revision 623 --username abc --notrunk --notags --branches http://svnURL/XYZProject --authors authors.txt --branches --no-minimize-url 以进行详细日志记录以帮助调试。