2010-04-20 161 views
105

我开始使用git-svn的克隆操作克隆SVN存储库。经过大约6个小时的导入(这是一个大回购),我的电脑去睡觉了。有没有办法在不重做所有初始工作的情况下恢复操作?恢复git-svn克隆

回答

140

git svn fetch命令来恢复一个git svn clone是由几个来源证实:

(顺便说一句,如果初始克隆步骤过程中您的连接中断,或者您需要停止它然后恢复克隆你只需运行上述命令恢复下载历史)。

似乎是在git-svn内存泄漏。 git-svn进程的大小增长缓慢,大约两周后,它的容量为1.2 GB,此时操作系统拒绝让它分叉。
事情是,这是一个伪装的祝福。
我能够通过一个简单的“git svn fetch”来恢复被中断的克隆,并且现在它的运行速度要快得多,而且这个堆已经非常小了。
事实上,这种做法非常好,我养成了每天晚上和每天早上中断和重新启动过程的习惯。几天后,它完成了。

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

-s标志假设Y:

您可以通过克隆现有Subversion版本库与git-svn开始你的冒险我们的存储库使用“trunk,branches,tags”约定。如果没有,你必须手动指定哪些目录代表分支和标签,如果你想让Git知道它们的话。

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

+1

我认为'git svn clone'提供的一些命令行选项也需要提供(如适用)到'git svn fetch'。例如,我为'git svn clone'设置了'-r HEAD'来获取HEAD SVN修订版本。要恢复我运行'git svn fetch',它开始导入所有修订版。 – amolbk 2015-05-14 05:38:47

+0

这开始了第一次修订的一切......我有10,000个提交!有关如何从中断的地方恢复*的任何想法? – 2015-08-11 18:54:14

+0

@ NathanJ.Brauer不在我的头上。你可以问一个新的问题(操作系统,使用的git版本和svn版本,以及回到这个答案的上下文链接) – VonC 2015-08-11 19:02:27

14

我发现a blog post提供了什么(我希望)是一个正确的答案。

显然,运行git svn fetch有效地完成了克隆操作。希望!

+7

你将不得不使用恢复提取后执行'git svn rebase'完成操作并让主分支反映中继线 – 2010-04-20 16:51:09

+0

您能否提供指向博客文章的链接以供将来参考? – jmanning2k 2010-04-20 17:03:57

5

由于VonC,CaptainAwesomePants和Archi都说git svn fetch有窍门。我正在做git svn clone url... --authors-file=path/to/file,克隆失败,因为其中一位作者不在作者文件中。我将作者添加到文件中,然后运行git svn fetch,它继续从停止的地方继续查看git日志,似乎它使用新添加的作者来替换提交作者的名称,所以都很甜蜜。

+0

同样在这里!感谢您的文章! – 2016-02-19 10:30:15

3

至少从Git的2.1.0您可以通过只补发git svn clone

然而,这将复制在你的.git/config中某些条目删除这些,一切都会好起来的

+0

'从至少git 2.1.0 ...'任何想法,如果这个功能存在于git 1.9.1? – CivFan 2015-06-10 18:46:14

+0

对不起,我不再有任何svn版本库来试试这个。 – 2015-07-21 07:16:48

+0

'git svn fetch'导致校验和不匹配 - 并且不可能重置,因为显然没有HEAD:/ - 但是这工作正常,只需从'.git/config中删除'svn-remote.fetch' ' – OLL 2015-11-02 11:03:52