2013-07-17 89 views
5

我正在將我的svn回購轉換爲git。這是一個非常大的回購協議,並且它保持失敗,因此我只需克隆其中的一部分。我使用了下面的命令:Git Svn克隆某些版本,並繼續克隆將來的其他版本

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

它成功完成,但我只有最新的幾個提交。無論如何繼續克隆早期的提交?

PS:克隆整個回購沒有-r總是導致RA層請求失敗:'svn/project /!svn/vcc/default'上的REPORT請求失敗:...無法讀取塊大小:安全連接被截斷......有時,幾天後...所以我決定放棄它,並克隆只有部分

編輯:添加錯誤消息

RA層請求失敗:報告請求失敗的「/ SVN/project /!svn/vcc/default':REPORT of'/ svn/project /!svn/vcc/default':無法讀取塊大小:安全連接被截斷(https://svn.myserver.com)位於/ usr/lib/perl5/site_perl/Git /SVN/Ra.pm line 282

回答

1

與git你不能添加歷史「在」你已經有了什麼。每一個git提交引用所有提交,它是一個繼承者(通過包含這些提交的散列)。可以重寫歷史記錄(並在前面添加新的提交),但是這會給你全新的提交(改變哈希),而不是你想在積極使用的回購中做什麼。

您應該儘可能多地抓取歷史記錄,並聲稱它是「初始導入」,或嘗試修復導入問題。當你談論幾天的時候,聽起來好像你可以從更接近svn repo中獲益,即在svn服務器本身上運行命令以節省網絡開銷/延遲。

也可能有助於提供有關您遇到的實際錯誤的更多信息。

+1

那麼,這是否意味着如果我從R10000開始克隆,那麼我在Git倉庫中的最早歷史記錄是R.100000?在最初的克隆之後沒有辦法獲取較早的歷史記錄(提交)? – Zennichimaro

+0

至少難以將高達10萬個分支與100萬個分支開始集成。如果你獨立創建它們,你需要重新寫入100k分支,當你將它粘貼到高達100k的分支上時,這會導致重寫歷史的所有常見問題,或者可以使用移植(nb我從未使用過他們):https://git.wiki.kernel.org/index.php/GraftPoint ---如果可能的話,最好的解決方案是將整件事整合到一塊。 – mnagel

5

如果你想要整個歷史,爲什麼不從你的svn回購的rev 1開始?授予它將需要一段時間,但你可以分開做。例如:

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

一旦完成光盤放入項目並運行:

git svn fetch svn -r10000:20000 

你甚至可以重疊:

git svn fetch svn -r9997:20000 

,它會跳過的作品,它已經得到。你可能不想創造空白。

而且我認識到,你已經嘗試過在沒有任何-r規範的情況下完成所有操作,並且出現了錯誤,但是也許會在部分中做到這一點。如果出現錯誤,請嘗試再次運行相同的命令。在過去使用git svn clone時,我曾經遇到很多失去聯繫或發生隨機錯誤的情況,但是對該項目進行的CD-git svn fetchrebase -ing(有時反覆)似乎在繼續前進。

+0

謝謝!我從來沒有嘗試過,就會給它一個鏡頭 – Zennichimaro

+0

可悲的是,它具有相同的錯誤消息再次失敗:指數不匹配:907786790b14a445c2b5eef420311bea543b597c = 09b95548bc4f106b1bb5 7be669737878067e1f4c 重讀ac49f8e7dbfaeaa3cf500b946c6ebe50abb735ee 中號應用/資產/ GUI/ReadMe.txt中 RA層請求失敗:'/ svn/sg /!svn/vcc/default'上的REPORT請求失敗:R '/ svn/sg /!svn/vcc/default'的EPORT:無法讀取塊大小:安全連接 截斷(https://192.168.1.107)at /usr/lib/perl5/site_perl/Git/SVN/Ra.pm line 282 – Zennichimaro