我 在大型项目中使用svn。我可以毫无问题地检查项目的主干。需要30分钟/ 1小时。我是这样做的:
svn checkout https://myrepo.com:port/svn/trunk/
但如果我尝试使用git,则需要永远。我在读取错误的两天后一直在git svn fetch
做 git svn clone https://myrepo.com:port/svn/trunk/
,因为我读了类似问题的一些答案,但没有。我使用的命令是
class
问题(我认为)是git试图克隆一切(所有分支)以及其他我不想要的东西。在目录svn上,有trunk和branches,还有其他我不需要的目录。我只想要行李箱。
这是正常行为吗?
答案 0 :(得分:2)
使用您的命令,它只会克隆主干,因为您指定了主干URL。但它仍然克隆了它的整个历史,通过一个接一个地获得所有修订,然后让Git提出它。这需要很长时间,特别是如果您不在SVN存储库位于文件系统上的服务器上执行此操作。这是我不鼓励使用基于git-svn
或git-svn
的工具进行一次性迁移的众多原因之一。
您可以使用--revision
参数git svn clone
来仅导入部分历史记录,例如: G。最近10次提交。
答案 1 :(得分:1)
git svn clone
明显变慢,主要是因为它不是裸存储库。
注意:请记住为迁移生成authors文件。
这些额外的步骤将加速svn→git migration的过程:
git svn clone https://myrepo.com:port/svn/ --stdlayout <deleteMe.git>
包含所有额外参数,例如--ignore-paths
和其他参数。git svn clone
操作,只是为了以后使用.git/config
文件。git init --bare <useMe.git>
<useMe.git>/config
替换为步骤1中的<deleteMe.git>.git/config
。(因为它是裸 repo)<useMe.git>/config
以更改bare = false
→bare = true
cd <useMe.git>
git svn fetch
并注意提高速度。git clone <useMe.git> <newNonBare.git>
<useMe.git>
并推送到它,对你当地的GitLab服务器项目说。注意:要获得尽可能最快的git svn clone / fetch
速度,请在本地复制svn存储库,然后从中复制git svn clone
。但是此方法要求您使用此参数--rewrite-root
,以便克隆的git存储库在注释中维护原始的svn URL。
希望有所帮助。