2015-02-09 94 views
0

如果我只想專注於linux的某個模塊,如perf,如何從github分支或下載perf模塊相關的文件?我試過以下命令:如何從Linux內核克隆模塊?

c:\work> git clone https://github.com/torvalds/linux/tree/master/tools/perf 
Cloning into 'perf'... 
fatal: repository 'https://github.com/torvalds/linux/tree/master/tools/perf/' not found 

但它不能工作。

+0

這是不可能的,因爲整個linux回購只是一個大的git倉庫。您沒有任何方法可以有選擇地克隆一個文件夾。您可以克隆整個存儲庫並在您喜歡的文件夾上工作。 – positron 2015-02-09 08:40:48

+0

它是可能的。請參閱下面的答案。 – 2015-06-02 14:08:35

+0

爲什麼人們不喜歡這個?這是一個很好的問題。 – 2015-06-03 08:16:00

回答

1

您需要使用Git的兩個相對較新功能的組合。

第一個是稀疏結帳(自Git 1.7.0起可用)。稀疏檢出允許您通過明確指定您想要在回購中使用哪些目錄來保持工作區清潔。但是它不會影響整個存儲庫的大小,並且下載1GB的所有Linux內核源代碼是痛苦的。這就是爲什麼你需要第二個功能:

第二個功能是淺克隆(自Git 1.9.0以來可用)。它允許您從一個回購倉庫中僅使用--depth參數在歷史記錄中保留n變更集。

所以,如果你想獲得只有tools/perf模塊,這是要走的路:

git init 
git remote add origin https://github.com/torvalds/linux.git 
git config core.sparsecheckout true 
echo "tools/perf" >> .git/info/sparse-checkout 
git pull --depth=1 origin master 

瞧!您的回購目錄中唯一的目錄是tools/perf,您只需下載136MB。

+0

此方法不保留'tools/perf'的所有日誌,那麼是否有任何方法來保存日誌? – 2015-06-03 03:30:13

+1

如果你想要所有的日誌,只需跳過'--depth = 1'選項,但是你會下載整個歷史記錄,所以需要下載很多數據。或者你可以嘗試,例如'--depth = 4000',它只會下載最新的4000次提交的日誌。 – 2015-06-03 14:12:32