使用svn2git SVN到GIT迁移失败

时间:2012-03-27 13:13:48

标签: git svn

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

SVN存储库结构是:

  • 标记
  • TRUNK

我使用以下命令克隆此回购:

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

但是这个命令只迁移一个分支而根本不迁移任何标记。我使用这些命令来检查结果:

[user@forge git-repo]# git branch -a
* master
  springy
  remotes/springy
[user@forge git-repo]# git tag -l
[user@forge git-repo]# 

如何迁移所有分支和标记? 谢谢你的帮助!

更新

使用参数 - authors authors-file.txt 并将名称和电子邮件地址添加到git配置svn2git后工作正常:

 git config --global user.name "your name"
 git config --global user.email "your@email.com"

您必须在 authors-file.txt 中为每个 SVN用户添加一行:

 svn-user-name = Full Name <email@address.com>

git branch -a git tag -l <​​/ em>现在返回所有分支和标签。

2 个答案:

答案 0 :(得分:10)

我没有使用svn2git的经验,但您可以尝试使用git svn clone切换到git。请注意,这将花费很长时间。有关详细信息,请参阅git help svn

请注意,这不会在git中创建正确的标记,很可能是由于svn2git常见问题解答中讨论的git和svn标记的不同。相反,该工具将创建标记分支。如果你想把它们变成合适的标签(因为我假设你根本不会回到SVN,这不应该造成任何伤害),有一个讨论{{3关于如何编写脚本来做到这一点。

答案 1 :(得分:1)

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

我使用托管在https://github.com/nirvdrum/svn2git上的svn2git包装器脚本来进行git迁移的颠覆,这肯定是有帮助的,特别是当我们想要定期从我们的subversion存储库中提取变更集时,因为我们没有完全关闭subversion repo for明显的原因。您可以浏览ruby包装器脚本migration.rb以了解更多信息。