我正在尝试使用svn2git将存储库从SVN迁移到GIT。它是一个开源项目,公共SVN存储库Url是:http://svn.verinice.org/svnroot/。随意测试迁移...
SVN存储库结构是:
我使用以下命令克隆此回购:
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>现在返回所有分支和标签。
答案 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以了解更多信息。