我正在将我的 svn 存储库转换为 git。这是一个非常大的 repo 协议(protocol),它一直在失败,因此我只需要克隆它的一部分。我使用了以下命令:
git svn clone -r100000:HEAD https://svn.myserver.com/project/ .
它成功完成,但我只有最近的几个提交。无论如何要继续克隆早期的提交?
P.S:在没有 -r 的情况下克隆整个 repo 总是导致 RA layer request failed: REPORT request failed on 'svn/project/!svn/vcc/default': ... could not read chunk size: Secure connection truncated 。 .. 有时,几天后... 所以我决定放弃它并只克隆部分
编辑:添加错误信息
RA 层请求失败:“/svn/project/!svn/vcc/default”上的 REPORT 请求失败:“/svn/project/!svn/vcc/default”的报告:无法读取 block 大小:安全连接在/usr/lib/perl5/site_perl/Git/SVN/Ra.pm 第 282 行截断 ( https://svn.myserver.com )
最佳答案
如果你想要整个历史,为什么不从你的 svn 仓库的 rev 1 开始呢?当然这需要一段时间,但您可以分部分进行。例如:
git svn clone -r1:10000 https://svn.myserver.com/project/ .
一旦完成 cd 进入 project 并运行:
git svn fetch svn -r10000:20000
你甚至可以重叠:
git svn fetch svn -r9997:20000
它会跳过它已经得到的部分。您可能只是不想制造差距。
而且我知道您之前曾尝试在没有任何 -r 规范的情况下将其全部 pull 出并出现错误,但也许分段进行会解决这个问题。如果确实遇到错误,请尝试再次运行相同的命令。在过去使用 git svn clone
时,我遇到过很多失去连接或出现随机错误的情况,但 cd-ing 进入项目并 git svn fetch
或 rebase
-ing(有时反复)似乎一直在从它之前停止的地方开始。
关于Git Svn clone 某些修订版,并在未来继续克隆其他修订版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17689582/