SVN到GIT的迁移使用svn2git失败了

7
我将使用svn2git来迁移一个仓库从SVN到GIT。这是一个开源项目,公共SVN仓库地址为:http://svn.verinice.org/svnroot/。欢迎您进行迁移测试...
SVN仓库结构如下:
  • BRANCHES(分支)
  • TAGS(标签)
  • 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 -agit tag -l 现在会返回所有分支和标签。

2个回答

10

我对svn2git没有经验,但你可以尝试使用git svn clone来切换到git。需要注意的是,这可能需要很长时间。详见git help svn了解更多信息。

请注意,这样做不会在git中创建正确的标签,这很可能是因为svn2git FAQ中讨论的git和svn标签之间的差异。相反,该工具将创建标签分支。如果你想将它们转换成合适的标签(而且我假设你不会再回到SVN,这不应该造成任何问题),有一篇关于如何编写脚本实现此操作的文章可供参考。


也可以正常工作。使用分支而不是标签没有问题 - 可以接受。 - uı6ʎɹnɯ ꞁəıuɐp

1
重要的是要知道,所有这些工具都是基于git的本地SVN支持git-svn构建的。因此,可以直接使用git-svn进行克隆、获取变更集等操作,但最好有一个单一的脚本/工具来帮助我们在迁移期间执行所有操作,因此需要这样的工具。
我使用了托管在https://github.com/nirvdrum/svn2git上的svn2git包装脚本进行从Subversion到Git的迁移,并且它确实有所帮助,特别是当我们想要定期从Subversion存储库中拉取变更集时,因为我们出于明显的原因没有完全关闭Subversion存储库。您可以查看ruby包装脚本migration.rb以了解更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接