将非标准svn转换为git

将非标准svn转换为git,svn,git,git-svn,Svn,Git,Git Svn,我们有一个非标准的svn设置,如下所示: Root |----->Trunk | |---->Projects | | |---> Project 1 | | |---> Project 2 | | |---> Project 3 | |---->Libraries | | |---> Library 1 | | |---> Li

我们有一个非标准的svn设置,如下所示:

Root
|----->Trunk
|      |---->Projects
|      |      |---> Project 1
|      |      |---> Project 2
|      |      |---> Project 3
|      |---->Libraries
|      |      |---> Library 1
|      |      |---> Library 2
|----->Tags
|      |---->Projects
|      |      |---> Project 1
|      |      |      |----> 1.0.0.0
|      |      |      |----> 1.0.0.1
|      |      |---> Project 2
|      |      |      |----> 1.0.0.2
|      |      |      |----> 1.0.0.3
|      |---->Libraries
|      |      |---> Library 1
|      |      |       |----> 1.0.0.0
|      |      |       |----> 1.0.0.1
|      |      |---> Library 2
|      |      |       |----> 1.0.0.0
|      |      |       |----> 1.0.0.1
我已经做了一个git svn克隆,但是当然所有的标记都不起作用(我们在svn中没有分支)。
有没有办法把这些乱七八糟的东西分解成多个git回购协议?

您可以使用git svn导入。您将需要为每个项目和每个库执行一次。使用-t-t参数指定主干和标记位置,但忽略分支规范

现在您需要将它们与子模块一起移植。听起来像是一个有趣且富有挑战性的项目。如果你还需要帮助,请告诉我


希望这能有所帮助。

我已经考虑过了,但那要花很长时间。我确信写一个脚本来自动化它不会很困难,但可惜我的脚本技巧有点生疏了。我相信有足够的时间我可以写一个脚本,但我想我可能会在这里寻求一些帮助。我建议在git irc频道上获得一些帮助。这是编写这样的脚本获得实时帮助的最佳媒介。使用pastie.org粘贴并显示脚本以及脚本结果。如果你的历史对你很重要,那就去做吧。如果您想时不时地检查它,请保留svn版本的备份,并在git中创建一个“聚合历史”,其中您只提交每个项目的标记,然后提交每个项目的主干(不要忘记超级项目标记引用的库的版本)。