我在用着svn2git https://github.com/nirvdrum/svn2git测试 svn 存储库到 git 的迁移。
现在我的 svn 是这样构建的
myproj
包含
repo1 /
repo2 (obsolete)/
old/
每个存储库都包含自己的分支、标签等。
我只需要 repo1 中的所有内容。
当我开始这个过程时,我得到这个:
svn2git https://server/myproj/repo1 --username LVO
output:
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
(尤其是后备箱的事情我不清楚)。当我的存储库位于此树中时,如何启动 svn2git?
对于一次性迁移git-svn
is not用于转换存储库或部分存储库的正确工具。如果您想使用 Git 作为现有 SVN 服务器的前端,那么它是一个很棒的工具,但对于一次性转换,您应该not use git-svn
, but svn2git
这更适合这个用例。
The svn2git
您使用的工具基于git-svn
因此,它具有大多数相同的缺点,只是在克隆后的操作中修复了一些缺点。
有很多工具称为svn2git
,最好的可能是 KDE 中的一个https://github.com/svn-all-fast-export/svn2git https://github.com/svn-all-fast-export/svn2git。我强烈建议使用它svn2git
工具。这是我所知道的最好的,并且它的规则文件非常灵活。
您将能够轻松配置svn2git
s 规则文件,以从当前 SVN 布局生成您想要的结果,包括任何复杂的历史记录。
如果您对存储库的历史不是 100% 了解,svneverever
from http://blog.hartwork.org/?p=763 http://blog.hartwork.org/?p=763是一个很好的工具,可以在将 SVN 存储库迁移到 Git 时调查其历史记录。
虽然git-svn
(或者svn2git
基于它)更容易上手,这里是使用 KDE 的一些进一步原因svn2git
代替git-svn
除了灵活性之外,它还具有优越性:
- 历史被重建得更好、更干净
svn2git
(如果使用正确的),对于具有分支和合并等的更复杂的历史记录尤其如此
- 这些标签是真正的标签,而不是 Git 中的分支
- with
git-svn
标签包含一个额外的空提交,这也使得它们不是分支的一部分,所以一个正常的fetch
除非你给予,否则不会得到它们--tags
默认情况下,只有指向所获取分支的标签才会被获取。有了正确的 svn2git 标签,它们就在它们所属的地方
- 如果您更改了 SVN 中的布局,您可以使用以下命令轻松配置
svn2git
, with git-svn
你最终会失去历史
- with
svn2git
您还可以轻松地将一个 SVN 存储库拆分为多个 Git 存储库
- 或者轻松地将同一 SVN 根目录中的多个 SVN 存储库合并到一个 Git 存储库中
- 如果正确的话,转换速度会快数亿倍
svn2git
比与git-svn
你看,原因有很多git-svn
更糟糕的是 KDEsvn2git
是优越的。 :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)