git clone linux庫踩過的坑及解決方法


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,命令是git clone --depth=1 git@github.com:Sklud1456/linux.git(由於之前fork過,所以就一直使用自己的倉庫了)

這一次的objects數量很少:原本有8562013個,現在僅有79571個

上圖是我自己中斷了,但后面第二次clone的時候出現了新的問題。缺失了路徑,百度得知是由於linux和Windows不兼容的問題,但通過:

git config core.protectNTFS false(在執行該命令時要查看倉庫是否為linux倉庫,因為git clone linux會在根目錄下新建一個linux文件夾,在這個文件夾里面才是倉庫,這一點在我clone其他倉庫是沒有遇見)

git checkout -f HEAD

之后可以正常下載,原因在這一個網站有解釋:http://t.zoukankan.com/GyForever1004-p-13702643.html

這時候的linux倉庫僅有最新的一個commit。

之后再執行一次:git pull --unshallow即可

運行結束后其中的commit數量變成了全部的commit數量。

4.總結

對於git clone我還是第一次踩這么多的坑,而且網上沒有對於這種情況的完整解釋,且該方法可能對其他一些commit數量多、總量大的倉庫也有借鑒作用,所以進行了記錄,希望可以幫到其他人。

我現在覺得一開始直接git clone報connect closed的問題也有可能是沒有關閉文件保護的原因,但是我並沒有進行驗證。已經有了一個解決方法,夠用就行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM