Có một số việc bạn có thể làm. Đầu tiên, "đồng bộ hóa repo" với đối số -c sẽ giới hạn hộp cát được kiểm xuất thành chỉ nhánh "hiện tại". Đồng bộ hóa repo sẽ không tải xuống tài liệu cho các nhánh khác.
Bạn cũng có thể chỉnh sửa tệp kê khai .repo/manifests/default.xml. Những gì tôi làm là tạo một bản sao lưu của nó như "default.bak" và sau đó loại bỏ các dòng từ tệp default.xml mà tôi biết tôi không cần. Bởi vì tôi không xây dựng trên Macintosh, tôi biết tôi không cần bất kỳ công cụ "darwin" nào, vì vậy tôi xóa mọi dòng có chứa "darwin". Sau đó, "repo sync" không tải xuống bất kỳ dự án darwin nào hoặc cài đặt mã nguồn trong hộp cát.
Nếu bạn đã đồng bộ hóa một hộp cát và bạn muốn cắt kích thước, bạn có thể loại bỏ các dự án như trên, sau đó thực hiện "repo sync -c -l" và repo sync sẽ chỉ xóa các thư mục mà bạn vừa đã xóa. Cờ -l chỉ thực hiện phần cục bộ của đồng bộ, có nghĩa là nó chỉ đồng bộ các dự án git cục bộ với cây nguồn của bạn. Mạng không được sử dụng. Xem cờ "-n" cho nửa còn lại của đồng bộ thông thường, mạng này sẽ đồng bộ hóa để cập nhật các dự án git cục bộ với kho lưu trữ ngược dòng.
Để cũng loại bỏ các cửa hàng đối tượng git sự ủng hộ cho các dự án không mong muốn (mà mất rất nhiều phòng) Tôi sử dụng này:
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
này tìm tất cả các dự án có trong bản sao lưu của bạn kê khai nhưng có đã bị xóa khỏi tệp kê khai hoạt động của bạn và xóa các dự án git cũng như tất cả dữ liệu sao lưu cho chúng. Điều này phục hồi rất nhiều không gian.
Nếu bạn xóa quá nhiều, chỉ cần khôi phục dòng dự án từ tệp kê khai dự phòng của bạn và thêm lại dòng đó vào tệp kê khai hoạt động của bạn. Sau đó, một đồng bộ repo sẽ nhận được các dự án git của bạn và sandbox của bạn thẳng một lần nữa. Bạn có thể kiểm tra bản dựng để xem liệu bạn đã loại bỏ nhiều bằng cách thực hiện "mma -B -n" trong thư mục dự án của bạn chưa. Điều này sẽ cố gắng làm một sự phụ thuộc hoàn toàn vào mục tiêu của bạn, buộc tất cả các mục tiêu để xây dựng ngay cả khi họ không cần nó, và nó sẽ làm điều đó như là một chạy khô. Nếu việc xây dựng không thành công, bạn đã xóa một thứ mà dự án của bạn cần.
Bạn cũng có thể thiết lập hộp cát gương bản địa và tạo các hộp cát nhỏ, hoạt động, tham chiếu từ gương của mình. Các sandbox đang hoạt động không chứa các cửa hàng đối tượng git, nhưng tham chiếu đến các ô trung tâm trong gương. Sử dụng "repo init -u ... --mirror" để thiết lập gương, và "repo init --reference = ~/android-mirror -u ..." để tham chiếu đến mirror. Cờ -u sau này cho phép một kho lưu trữ ngược dòng thực sự được sử dụng làm cơ quan, trong khi tham chiếu nhân bản được sử dụng như một bộ đệm cục bộ. Gương địa phương cũng tránh hạn ngạch tải xuống mà dự án AOSP thực thi và chúng nhanh hơn để đồng bộ hóa.
Điều này mang lại lỗi, '$ repo init -u https: // android.googlesource.com/platform/manifest', sau đó' $ repo sync platform/tools/base' và tôi nhận được 'lỗi: nhóm dự án phải được bật cho nền tảng/công cụ/cơ sở dự án. Bất kỳ ý tưởng? – nmr