我使用svn2git测试svn repo到git的迁移。
现在我的SVN是这样建的
myproj包含

repo1 /
repo2 (obsolete)/
old/

每个回购协议都包含自己的分支、标签等。
我只需要回购协议中的所有东西。
当我开始这个过程时,我会得到:
svn2git https://server/myproj/repo1 --username LVO

输出:
Initialized empty Git repository in /folder/.git/
Using higher level of URL: https://server/myproj/repo1 => https://server/myproj

然后这个过程就开始了。恐怕它也要拿走所有其他的旧回购协议。这是开始的正确方法吗?以下内容:
$ svn2git https://server/myproj/repo1 --username xxx --trunk=/repo1 --branches=/repo1 --tags=/repo1

(尤其是后备箱的事我不清楚)。当我的repo在这棵树中时,如何启动svn2git。

最佳答案

对于一次性迁移,git-svn不是用于转换存储库或部分存储库的正确工具。如果您想使用Git作为现有的VPN服务器的前端,这是一个很好的工具,但是对于一次性转换,您不应该使用git-svn,但是svn2git它更适合这个用例。
您使用的svn2git工具基于git-svn,因此遭受了大多数相同的缺点,只在克隆后操作中修复了一些缺陷。
有很多称为svn2git的工具,最好的可能是https://github.com/svn-all-fast-export/svn2git中的kde工具。我强烈建议使用svn2git工具。这是我所知道的最好的,它可以很灵活地处理它的规则文件。
您将很容易配置svn2gits规则文件,从当前svn布局(包括任何复杂的历史记录)生成所需的结果。
如果您不是100%了解存储库的历史,svnevereverfromhttp://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更优的原因有很多。:-)

08-27 04:55