Git Svn克隆某些修订版,并继续克隆其他修订版

时间:2013-07-17 01:23:35

标签: git svn git-svn

我正在将我的svn repo转换为git。这是一个非常大的回购并且它一直失败,因此我必须只克隆它的一部分。我使用了以下命令:

git svn clone -r100000:HEAD https://svn.myserver.com/project/ .

它成功完成,但我只有最新的几个提交。反正有没有继续克隆早期的提交?

PS:在没有-r的情况下克隆整个repo总是导致RA层请求失败:'svn / project /!svn / vcc / default'上的REPORT请求失败:...无法读取块大小:安全连接被截断。 ..有时,这是几天后...所以我决定放弃它,只部分克隆

编辑:添加错误消息

RA层请求失败:'/ svn / project /!svn / vcc / default'上的REPORT请求失败:'/ svn / project /!svn / vcc / default'的报告:无法读取块大小:安全连接在/usr/lib/perl5/site_perl/Git/SVN/Ra.pm第282行截断(https://svn.myserver.com

2 个答案:

答案 0 :(得分:5)

如果你想要整个历史,为什么不从你的svn repo的rev 1开始呢?虽然这需要一段时间,但你可以部分完成。例如:

git svn clone -r1:10000 https://svn.myserver.com/project/ .

完成cd进入项目并运行:

git svn fetch svn -r10000:20000

你甚至可以重叠:

git svn fetch svn -r9997:20000

它将跳过它已经得到的碎片。您可能不想创建差距。

而且我认识到你在没有任何-r规范并且遇到错误之前已经尝试过将其全部拉出来,但是也许在分段中完成它会超过它。如果确实出现错误,请尝试再次运行相同的命令。在过去使用git svn clone时,我遇到了许多失去连接或出现随机错误的情况,但是进入项目git svn fetchrebase - (有时反复)似乎继续在它停止前的地方继续前进。

答案 1 :(得分:1)

使用git,你无法在“已经拥有”之前添加历史记录。每个git commit都引用ALL COMMITS,它是它的继承者(通过包含这些提交的哈希值)。可以重写历史记录(并在前面添加新的提交),但这会为您提供全新的提交(更改的哈希值),而不是您想要在活跃使用的仓库中执行的操作。

你应该尽可能多地获取历史记录并声称它是“初始导入”,或尝试修复导入问题。当你谈论几天时,听起来好像你可以从靠近svn repo中受益,即在svn服务器本身运行命令以节省网络开销/延迟。

也可能有助于提供有关您遇到的实际错误的更多信息。