恢复git-svn克隆


117

我开始使用git-svn的克隆操作克隆SVN存储库。导入大约6个小时后(这是一个很大的回购),我的计算机就开始睡觉了。有没有一种方法可以在不重做所有初始工作的情况下恢复操作?

Answers:


156

多个来源确认了git svn fetch恢复a 的命令git svn clone

(顺便说一句,如果在初始克隆步骤中您的连接中断了,或者您需要停止它,那么要恢复克隆,您只需运行以上命令即可恢复下载历史记录)。

中似乎有内存泄漏git-svngit-svn进程的大小增长缓慢,大约两周后,驻留大小为1.2 GB,此时操作系统拒绝让它分叉。
事实是,这是因祸得福。
我能够使用一个简单的“ git svn fetch” 来恢复被中断的克隆,并且使用现在更小的堆可以更快地运行它。
实际上,这种方法效果非常好,以至于我养成了每天晚上和每天早上都中断并重新启动该过程的习惯。几天后完成。

git-svn通过克隆现有的Subversion存储库开始您的冒险之旅:

git svn clone url://path/to/repo -s

-s标志假定您的存储库使用“主干,分支,标签”约定。如果不是这样,如果您希望Git知道分支和标签,则必须手动指定哪些目录代表分支和标签。

这将花费很长时间,因为它将从SVN获取每个修订版本并在本地提交。如果出于任何原因停止播放,您可以使用继续git svn fetch


1
我认为git svn clone还提供了一些命令行选项(如果适用)git svn fetch。例如,我已设置-r HEADgit svn clone仅获取HEAD SVN版本。要恢复运行git svn fetch,我开始导入所有修订。
amolbk 2015年

从第一版开始,这一切都开始了。。。我有10,000次提交!关于如何从中断处恢复的想法?
弥敦道JB

@ NathanJ.Brauer不在我的头上。您可以提出一个新问题(使用操作系统,git版本和svn版本,以及指向上下文的此答案的链接)
VonC

1
我在期间意外杀死了我的网络连接git svn clone,从而中断了该过程。git svn clone再次运行似乎可以恢复正在进行的克隆。还有其他人这样做吗?
凯兰·克鲁姆

1
@Kehlan显然是这样,如果您在下面
VonC


6

正如VonC,CaptainAwesomePants和Archi所说的git svn fetch那样。我在做一个git svn clone url... --authors-file=path/to/file,克隆失败,因为其中一位作者不在作者文件中。我将作者添加到文件中并运行git svn fetch,它从中断处继续播放,之后再查看git日志,似乎它使用新添加的作者替换了提交作者的名字,所以一切都很好。


5

从至少git 2.1.0起,您可以通过重新发布来恢复 git svn clone

但是,这将在您的.git / config中重复一些条目,将其删除,一切都会好起来的


From at least git 2.1.0...知道这个功能是否在git 1.9.1中存在吗?
CivFan

抱歉,我不再有任何svn存储库尝试此操作。
zan-xhipe 2015年

git svn fetch对我造成了校验和不匹配-且无法重置,因为显然没有HEAD:/-但这工作正常,只需svn-remote.fetch要从.git/config
OLL 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.