Hay varias cosas que puede hacer. En primer lugar, "repo sync" con un argumento -c limitará el sandbox desprotegido a solo la rama "actual". La sincronización de repositorio no descargará material para otras ramas.
También puede editar el manifiesto .repo/manifiestats/default.xml. Lo que hago es hacer una copia de seguridad, como "default.bak" y luego quitar las líneas del archivo default.xml que sé que no necesito. Como no estoy compilando un Macintosh, sé que no necesito ninguna de las herramientas "darwin", así que elimino cada línea que contiene "darwin". Luego, "repo sync" no descarga ningún proyecto darwin ni instala el código fuente en el sandbox.
Si ya ha sincronizado un sandbox y desea recortar su tamaño, puede quitar los proyectos como se indica anteriormente y luego hacer "repo sync -c -l", y repo sync solo quitará los directorios que acaba de crear. remoto. El distintivo -l solo hace la parte local de la sincronización, lo que significa que solo sincroniza los proyectos git locales con su árbol de origen. La red no se usa. Ver el indicador "-n" para la otra mitad de una sincronización normal, que realiza la sincronización de red para actualizar los proyectos locales de git con el repositorio de flujo ascendente.
Para eliminar también los almacenes de objetos respaldo git para los proyectos no deseados (que ocupan mucho espacio) que utilizo esto:
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
Esto encuentra todos los proyectos que se encuentran en la copia de seguridad se manifiestan, pero tienen ha sido eliminado de su manifiesto activo, y elimina los proyectos de git y todos los datos de respaldo para ellos. Esto recupera mucho espacio.
Si elimina demasiado, solo recupere la línea del proyecto del manifiesto de la copia de seguridad y vuelva a agregarlo al manifiesto activo. Luego, una sincronización de repositorios hará que tus proyectos de git y tu zona de pruebas vuelvan a ser rectas. Puede probar la compilación para ver si ha eliminado demasiado haciendo "mma -B -n" en el directorio de su proyecto. Esto intentará construir una dependencia completa en tu objetivo, obligando a todos los objetivos a construir incluso si no lo necesitan, y lo hará como una ejecución en seco. Si la construcción falla, eliminaste algo que tu proyecto necesita.
También puede configurar un entorno limitado de espejo local y crear entornos de prueba pequeños, que funcionen, de referencia desde el espejo. Los sandboxes de trabajo no contienen almacenes de objetos de git, sino que se refieren a los centrales en el espejo. Utilice "repo init -u ... --mirror" para configurar el espejo, y "repo init --reference = ~/android-mirror -u ..." para referirse al espejo. El distintivo -u en este último permite utilizar un repositorio real en sentido ascendente como autoridad, mientras que la referencia reflejada se utiliza como un caché local. Las réplicas locales también evitan la cuota de descarga que impone el proyecto AOSP, y son más rápidas de sincronizar.
Esto produce un error, '$ repo init -u https: // android.googlesource.com/platform/manifest', luego' $ repo sync platform/tools/base', y obtengo 'error: project group debe estar habilitado para la plataforma/herramientas/base del proyecto'. ¿Algunas ideas? – nmr