我通过这种方式从svn迁移到git
git svn init https://svn...
git svn fetch
我可以更改迁移的提交,而不是
git中的“commit to svn”是“svn中的修订号-commit to svn”
例如
541-初始模块ABC
最佳答案
对于一次性迁移,git-svn
不是用于转换存储库或部分存储库的正确工具。如果您想使用Git作为现有的VPN服务器的前端,这是一个很好的工具,但是对于一次性转换,您不应该使用git-svn
,但是svn2git
它更适合这个用例。
有很多称为svn2git
的工具,最好的可能是https://github.com/svn-all-fast-export/svn2git中的kde工具。我强烈建议使用svn2git
工具。这是我所知道的最好的,它可以很灵活地处理它的规则文件。
您将能够很容易地配置svn2git
规则文件,以从当前的VPN布局中生成所需的结果,包括可能存在的任何复杂历史。
使用kdesvn2git
还可以使用--msg-filter
参数修改提交消息,从而在主题行中引入修订id。
如果您不是100%了解存储库的历史,svneverever
fromhttp://blog.hartwork.org/?p=763是一个很好的工具,可以在将svn存储库迁移到git时调查其历史。
即使git-svn
(或者使用的svn2git
)更容易开始,这里还有一些进一步的理由,为什么使用KDE svn2git
而不是git-svn
优于它,除了它的灵活性:
通过svn2git
(如果使用正确的方法)可以更好、更清晰地重建历史,对于分支和合并等更复杂的历史尤其如此
标记是真正的标记,而不是git中的分支。
使用git-svn
时,标记包含一个额外的空提交,这也会使它们不属于分支,因此正常的fetch
在您将--tags
交给命令之前不会获取它们,因为默认情况下,也只获取指向已获取分支的标记。有了合适的svn2git标签
如果您在svn中更改了布局,您可以使用svn2git
轻松配置它,使用git-svn
您最终将丢失历史记录
使用svn2git
还可以轻松地将一个svn存储库拆分为多个git存储库
或者将同一个svn根目录中的多个svn存储库轻松组合到一个git存储库中
正确的svn2git
比正确的git-svn
转换快上百万倍。
你看,git-svn
更差,kdesvn2git
更优的原因有很多。:-)