git svn需要一个小时,svn需要一个小时

时间:2017-02-14 14:40:15

标签: svn git-svn

在大型项目中使用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,还有其他我不需要的目录。我只想要行李箱。

这是正常行为吗?

2 个答案:

答案 0 :(得分:2)

使用您的命令,它只会克隆主干,因为您指定了主干URL。但它仍然克隆了它的整个历史,通过一个接一个地获得所有修订,然后让Git提出它。这需要很长时间,特别是如果您不在SVN存储库位于文件系统上的服务器上执行此操作。这是我不鼓励使用基于git-svngit-svn的工具进行一次性迁移的众多原因之一。

您可以使用--revision参数git svn clone来仅导入部分历史记录,例如: G。最近10次提交。

答案 1 :(得分:1)

git svn clone明显变慢,主要是因为它不是存储库。

注意:请记住为迁移生成authors文件。

这些额外的步骤将加速svn→git migration的过程:

  1. git svn clone https://myrepo.com:port/svn/ --stdlayout <deleteMe.git>包含所有额外参数,例如--ignore-paths和其他参数。
  2. 然后取消步骤1中的git svn clone操作,只是为了以后使用.git/config文件。
  3. git init --bare <useMe.git>
  4. <useMe.git>/config替换为步骤1中的<deleteMe.git>.git/config。(因为它是 repo)
  5. 修改<useMe.git>/config以更改bare = falsebare = true
  6. cd <useMe.git>
  7. 现在,执行git svn fetch并注意提高速度。
  8. 完成提取后,git将其克隆为git clone <useMe.git> <newNonBare.git>
  9. 或者将一个git remote添加到<useMe.git>并推送到它,对你当地的GitLab服务器项目说。
  10. 注意:要获得尽可能最快的git svn clone / fetch速度,请在本地复制svn存储库,然后从中复制git svn clone。但是此方法要求您使用此参数--rewrite-root,以便克隆的git存储库在注释中维护原始的svn URL。

    希望有所帮助。