Es gibt eine Reihe von Dingen, die Sie tun können. Erstens wird "repo sync" mit einem Argument -c die ausgecheckte Sandbox auf den Zweig "current" beschränken. Die Repo-Synchronisierung wird kein Material für andere Zweige herunterladen.
Sie können auch das Manifest .repo/manifests/default.xml bearbeiten. Ich mache eine Sicherungskopie wie "default.bak" und entferne dann die Zeilen aus der default.xml-Datei, die ich nicht brauche. Da ich nicht auf einem Macintosh aufbaue, weiß ich, dass ich keines der "Darwin" -Tools brauche, also entferne ich jede Zeile, die "Darwin" enthält. Dann lädt "repo sync" keine darwin-Projekte herunter oder installiert den Quellcode in der Sandbox.
Wenn Sie bereits eine Sandbox synchronisiert haben und ihre Größe anpassen möchten, können Sie Projekte wie oben beschrieben entfernen und dann "repo sync -c -l" ausführen, und die Repo-Synchronisierung entfernt nur die Verzeichnisse, die Sie gerade haben entfernt. Das Flag -l führt nur den lokalen Teil der Synchronisierung aus, dh es synchronisiert nur die lokalen Git-Projekte mit dem Quellbaum. Das Netzwerk wird nicht verwendet. Siehe "-n" -Flag für die andere Hälfte einer normalen Synchronisierung, die die Netzwerk-Synchronisierung durchführt, um die lokalen Git-Projekte mit dem Upstream-Repository zu aktualisieren.
Um auch die git Trägerobjektspeicher für die unerwünschten Projekte zu entfernen (was viel Platz einnehmen) ich verwenden:
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
Dies findet alle Projekte, die in Ihrem Backup manifestieren, sind aber haben wurde aus Ihrem aktiven Manifest entfernt und entfernt die Git-Projekte und alle zugehörigen Backing-Daten. Dies erholt viel Platz.
Wenn Sie zu viel entfernen, stellen Sie einfach die Projektlinie aus Ihrem Backup-Manifest wieder her und fügen Sie sie wieder in Ihr aktives Manifest ein. Dann wird eine Reposynchronisation Ihre Git Projekte und Ihre Sandbox wieder in Ordnung bringen. Sie können den Build testen, um zu sehen, ob Sie zu viel entfernt haben, indem Sie "mma -B -n" in Ihrem Projektverzeichnis ausführen. Dies wird versuchen, eine vollständige Abhängigkeit aufzubauen, die auf Ihrem Ziel basiert, und alle Ziele dazu zwingt, zu bauen, auch wenn sie es nicht brauchen, und es wird es als ein Trockenlauf machen. Wenn der Build fehlschlägt, haben Sie etwas entfernt, das Ihr Projekt benötigt.
Sie können auch eine lokale Spiegel-Sandbox einrichten und kleine funktionierende Referenz-Sandboxen von Ihrem Spiegel erstellen. Die funktionierenden Sandboxen enthalten keine Git-Objektspeicher, beziehen sich jedoch auf die zentralen im Spiegel. Verwenden Sie "repo init -u ... --spiegel", um den Spiegel einzurichten, und "repo init --reference = ~/android-mirror -u ...", um auf den Spiegel zu verweisen. Das -u-Flag in letzterem ermöglicht die Verwendung eines echten Upstream-Repositorys als Autorität, während die Mirror-Referenz als lokaler Cache verwendet wird. Lokale Spiegelungen vermeiden auch das vom AOSP-Projekt erzwungene Download-Kontingent, mit dem sie schneller synchronisiert werden können.
Dies ergibt einen Fehler, 'Repo $ init -u https: // android.googlesource.com/platform/manifest', dann' $ repo sync Plattform/tools/base', und ich erhalte 'Fehler: Projektgruppe muss für Projektplattform/Tools/Base aktiviert sein. Irgendwelche Ideen? – nmr