2017-02-14 38 views
0

在大型项目中使用svn。我可以毫无问题地检查项目的主干。它需要30分钟/ 1小时。我这样做:git svn永远需要,svn需要一个小时

svn checkout https://myrepo.com:port/svn/trunk/ 

但如果我尝试使用git,它需要永远。我一直在做git svn fetch,因为我在阅读类似问题的一些答案时得到了错误,但是没有收到错误。我使用的命令是

git svn clone https://myrepo.com:port/svn/trunk/ 

问题(我认为)是Git是试图克隆一切(所有分行),加上我不想其他的东西。在目录svn上,有主干和分支,还有其他我不需要的目录。我只想要树干。

这是正常的行为?

回答

2

使用您的命令,它只会复制中继,因为您指定了中继网址。但它仍然克隆了整个历史,一个接一个地完成所有修订,然后让Git完成它。这需要很长时间,特别是如果你不在服务器上的SVN存储库位于文件系统上。这是我劝阻使用git-svngit-svn的一次性迁移工具的原因之一。

您可以使用参数--revisiongit svn clone只导入历史记录的一部分,例如, G。最后10次提交。

+0

'git svn init'也知道'--ignore-paths'命令行选项可能有帮助。 – kostix

1

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

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

这些额外的措施将加快SVN→git的迁移过程:

  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. 替换与<deleteMe.git>.git/config<useMe.git>/config从步骤1(因为它是一个回购)
  5. 编辑<useMe.git>/config改变bare = falsebare = true
  6. cd <useMe.git>
  7. 现在,做git svn fetch并注意提高速度。
  8. 当抓取完成后,无论是混帐与git clone <useMe.git> <newNonBare.git>
  9. 或者一个git的远程添加到<useMe.git>和推到它克隆出来,说给当地GitLab服务器项目。

注意:为了达到最佳的git svn clone/fetch速度,本地复制svn库,并从中Svnserve的它,然后git svn clone。但是这种方法需要你使用这个参数--rewrite-root,这样你的克隆git仓库才能在注释中保留原始的svn URL。

希望有所帮助。