2012-03-27 145 views
7

我正在尝试使用svn2git将存储库从SVN迁移到GIT。这是一个开源项目,公共SVN资料库网址是:http://svn.verinice.org/svnroot/。随意测试迁移...SVN到GIT迁移失败使用svn2git

SVN仓库的结构是:

  • 分支机构
  • 标签
  • TRUNK

我用下面的命令来克隆这种回购:

svn2git http://svn.verinice.org/svnroot 
    --trunk TRUNK 
    --branches BRANCHES 
    --tags TAGS 

但是这个命令只能迁移一个分支而没有标签。我用这些命令检查结果:

[[email protected] git-repo]# git branch -a 
* master 
    springy 
    remotes/springy 
[[email protected] git-repo]# git tag -l 
[[email protected] git-repo]# 

如何迁移所有分支和标签? 感谢您的帮助!

UPDATE:使用参数--authors作者-file.txt的并添加姓名和电子邮件地址与git配置svn2git工作正常

后:

git config --global user.name "your name" 
git config --global user.email "[email protected]" 

您必须添加一个line for SVN用户authors-file.txt

svn-user-name = Full Name <[email protected]> 

git branch -a and git tag -l现在会返回所有分支和标记。

回答

10

我没有使用svn2git的经验,但是您可以尝试使用git svn clone来切换到git。请注意,这将需要很长时间。有关更多信息,请参阅git help svn

请注意,这不会在git中创建适当的标签,很可能是由于svn2git FAQ上讨论的git和svn标签的差异。相反,该工具将创建标签分支。如果你想把它们变成适当的标签(因为我假设你根本不会回到SVN,这不应该造成任何伤害),有关于如何编写脚本来做的讨论here只是。

+1

+1,git-svn足以完全克隆svn回购 – 2012-03-27 17:37:32

+0

也能正常工作。分支而不是标签是无害的 - 被接受。 – 2012-03-28 11:31:45

1

重要的是要知道,所有这些工具都建立在git的本地SVN支持git-svn之上。因此,可以直接使用git-svn进行克隆,获取变更集等,但最好有一个脚本/工具来帮助我们完成迁移过程中的所有操作,并因此需要这些工具。

我使用svn2git包装脚本托管在https://github.com/nirvdrum/svn2git上,以便对git迁移进行颠覆,它确实有帮助,特别是当我们想要定期从我们的Subversion存储库中提取变更集时,因为我们没有完全关闭Subversion回购站。您可以通过ruby包装脚本,migration.rb了解更多信息。