2015-02-07 55 views
7

我正在試圖從相同名稱的書中學習嵌入式Android。作者建議與AOSP薑餅分店合作。所以我跟着下載了源代碼:AOSP回購同步花費時間太長

$ repo init -u https://android.googlesource.com/platform/manifest.git 
-b gingerbread 

$ repo sync 

但是這太耗時了。另外從輸出中,它似乎也喜歡它從其他分支下載源代碼(我看到android-5 .....),這不是我想要的。我想知道這是爲什麼它需要這麼長時間。

有沒有人有同樣的問題?請給我一個建議!謝謝!

+0

相關:https://superuser.com/questions/603547/how-can-i-limit-the-size-of-the-android-source-i-need-to-download-with-repo-syn – 2018-01-15 06:45:49

回答

16

AOSP 一個多GB的下載,所以沒有多少你可以做的。但是,將-c/--current-branch選項傳遞給repo sync會導致Repo告訴Git只取出您真正需要的分支,而不是每個存儲庫的所有分支。對於像薑餅這樣的舊版本,理論上這應該是相當有益的。但是,Repo會使用通過HTTP下載的Git捆綁軟件對軟件倉庫進行種子處理,並且軟件包文件不受-c選件的影響。使用--no-clone-bundle將禁用軟件包文件。因此,以下回購命令應產生最小的下載:(記住,薑餅是幾個歲的釋放箱上最近很多硬件將無法正常工作了。)

repo sync -c --no-clone-bundle 

+0

但是,如果你指定一個分支(例如棉花糖),它不應該不下載其他分支(牛軋糖,薑餅)?例如,如果你用-b指定棉花糖的清單, – 2017-03-05 09:30:57

+0

@KaizerSozay:是的,這就是我想說的。用'-c'你只需下載需要的分支。 – 2017-03-14 07:38:07

1
repo sync -c --no-tags --no-clone-bundle -j2 

大大縮短了我的同步時間。

+0

一般來說,如果答案中包含有關 命令的意圖的解釋,以及爲什麼解決問題而不介紹其他問題,則答案會更有幫助。你能擴展'-j2'開關的功能嗎?它有什麼幫助? – 2017-12-08 21:59:04

+1

從'make'開關已知'-j',它設置要使用的作業數量(並行度)。 '-j2'將作業數設置爲2(即使用2個內核)。在Linux上,您通常使用'-j \'nproc \''或'-j $(getconf _NPROCESSORS_ONLN)'來自動檢測核心數量。 – pevik 2017-12-19 20:58:34

0

repo init --depth 1

這是可能會提高同步速度,因爲它應該只下載最新版本的回購協議的另一種選擇。

相關問題