1.前言
我在git clone linux開源倉庫中遇到了很多的麻煩,解決這些麻煩也花費了我大量的時間,於是打算記錄我解決這個問題的過程。
2.過程
最開始的時候我是直接在git bash中使用:git clone git@github.com:torvalds/linux.git命令來直接clone linux的源代碼庫,但是一開始的下載速度非常慢,等了很久,在波動的網速下總算將所有的object下載下來了(一看發現有3GB多),但后面就遇到了困擾我最久的一個問題:
這個closed by remote host的問題經我百度之后發現一般都是在ssh鏈接上發生的,沒有適用我這個情況的帖子。所以我只能盲人摸象。
一開始我認為是網速的問題,然后掛了VPN進行下載,在平均2-3MB/s的網速下仍有這個問題,認為並不是網速的緣故。后面我發現最花費時間的是resolving deltas這個步驟,而且這個connect closed的跳出時間在resolving之前,而且百度方面也沒有相似的問題,這一階段我已經卡了很久了。
我git clone了好幾次,也嘗試過失敗后直接進行git pull,但仍然是一樣的問題。為了提高網速我甚至采用先把代碼庫clone到國內的gitee網站上再clone的方法,但是gitee對於1GB以上的倉庫需要收費,不了了之。
然后我開始認為是linux庫過大的原因,於是打算提高buffer的容量,但仍然沒有解決。
后面又打算延長ssh的鏈接時間,但是並沒有找到正確的命令,無法延長。
之后我總算找到了正確的解決方法。
3.解決方法
主要參考網址:https://blog.csdn.net/SmallSource/article/details/90691700
我采用的方法是淺層clone,命令是
運行結束后其中的commit數量變成了全部的commit數量。
4.總結
對於git clone我還是第一次踩這么多的坑,而且網上沒有對於這種情況的完整解釋,且該方法可能對其他一些commit數量多、總量大的倉庫也有借鑒作用,所以進行了記錄,希望可以幫到其他人。
我現在覺得一開始直接git clone報connect closed的問題也有可能是沒有關閉文件保護的原因,但是我並沒有進行驗證。已經有了一個解決方法,夠用就行。