有很多事情可以做。首先,使用-c參數的「repo sync」會將簽出的沙箱限制爲僅「當前」分支。回購同步不會下載其他分支的材料。
您還可以編輯.repo/manifests/default.xml清單。我所做的就是對其進行備份,比如「default.bak」,然後從default.xml文件中刪除我知道我不需要的文件。因爲我不是在Macintosh上創建的,所以我知道我不需要任何「達爾文」工具,所以我刪除了包含「達爾文」的每一行。然後,「回購同步」不會下載任何達爾文項目或在沙箱中安裝源代碼。
如果你已經同步了一個沙箱,並且你想修剪它的大小,你可以像上面那樣去除項目,然後執行「repo sync -c -l」,並且回購同步只會剝去你剛纔的目錄除去。 -l標誌只會執行同步的本地部分,這意味着它只會將本地git項目與源代碼樹同步。網絡沒有使用。看到正常同步的另一半的「-n」標誌,它執行網絡同步來更新上游存儲庫的本地git項目。
要同時刪除了不必要的項目git的支持對象存儲(這佔用了大量的空間),我用這個:
for project in `diff ~/android/.repo/manifests/default.xml ~/android/.repo/manifests/default.bak | awk '{print $3}' | grep path | cut -f2 -d\"`; do rm -rf ~/android/.repo/projects/$project.git ; rm -rf ~/android/.repo/project-objects/$project.git ; done
這將找到所有在備份清單中的項目,但有已從活動清單中刪除,並刪除git項目及其所有後備數據。這恢復了很多空間。
如果刪除太多,只需從備份清單中恢復項目行,然後將其添加回活動清單。然後,回購同步將讓你的git項目和你的沙箱再次變直。你可以通過在項目目錄中執行「mma -B -n」來測試構建,看看你是否已經刪除了很多。這將嘗試對你的目標進行完全的依賴構建,即使他們不需要它也迫使所有目標構建,並且它將作爲空運行。如果構建失敗,則刪除了項目需要的東西。
您還可以設置本地鏡像沙箱,並從鏡像創建小型工作參考沙箱。工作沙箱不包含git對象存儲,但是可以參考鏡像中的中心部分。使用「repo init -u ... --mirror」來設置鏡像,並使用「repo init --reference =〜/ android-mirror -u ...」來引用鏡像。後者中的-u標誌允許真正的上游存儲庫用作權限,而鏡像引用用作本地高速緩存。本地鏡像還可以避免AOSP項目執行的下載配額,並且它們可以更快地同步到。
這會產生一個錯誤,'$ repo init -u https:// android.googlesource.com/platform/manifest',然後'$ repo sync platform/tools/base',我得到 錯誤:project group必須爲項目平臺/工具/基地啓用。有任何想法嗎? – nmr 2016-10-06 21:30:16