2010-04-20 163 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