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

Zen*_*aro 5 svn git git-svn

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

git svn clone -r100000:HEAD https://svn.myserver.com/project/ .
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:添加错误消息

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

Aln*_*lam 5

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

git svn clone -r1:10000 https://svn.myserver.com/project/ .
Run Code Online (Sandbox Code Playgroud)

一旦完成cd进入项目并运行:

git svn fetch svn -r10000:20000
Run Code Online (Sandbox Code Playgroud)

你甚至可以重叠:

git svn fetch svn -r9997:20000
Run Code Online (Sandbox Code Playgroud)

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

并且我认识到你已经试图在没有任何-r规范并且出现错误之前将其全部拉出来,但是也许在分段中完成它将会超过它.如果确实出现错误,请尝试再次运行相同的命令.在使用git svn clone过去我有它的许多情况下失去连接或有随机误差,但CD-ING到项目和git svn fetchrebase-ing(有时是多次)似乎保持拿起它之前离开.


mna*_*gel 1

使用 git,你无法在已有的内容“前面”添加历史记录。每个 git 提交都会引用它作为后继者的所有提交(通过包含这些提交的哈希值)。可以重写历史记录(并在前面添加新的提交),但这会给您带来全新的提交(更改的哈希值),并且不是您在活跃使用的存储库中想要做的。

您应该尽可能多地获取历史记录并声明其为“初始导入”,或者尝试解决导入问题。当你谈论几天时,听起来好像你可以从更接近 svn 存储库中受益,即在 svn 服务器本身上运行命令以节省网络开销/延迟。

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