La mejor manera de cambiar las versiones del repositorio de android eficientemente una vez descargado usando repo / git

Tengo una situación donde tengo que construir un conjunto de copias estáticas del código fuente de Android de diferentes versiones de lanzamiento.

Simplemente haciendo un repo init -b $version; repo sync repo init -b $version; repo sync tardará para siempre (el init requiere la interacción, y las sincronizaciones serán desperdicio de mi anchura de banda a través de versiones).

Mi configuración actual es descargar una versión base (digamos 1.6_r1), copiarla a una nueva carpeta (android-1.6_r2) y luego volver a ejecutar init y sync ( repo init -b android-1.6_r2; repo sync ). La sincronización falla a veces sin embargo, con errores como:

Ndk / build / plataformas / android-3 / arch-arm / usr / incl
Abortar
Árbol de trabajo de sincronización: 100% (153/153), hecho.

Error: desarrollo /: comprobación de plataforma / desarrollo caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1 Reposición de sincronización devuelta FAIL en android-2.1_r2.1s

He encontrado algunos mensajes con errores similares que indican que esto podría ser causado por repo estar fuera de sincronía con los archivos "cambiados" en el sistema de archivos, pero me pregunto si mis errores son causados ​​por el cambio de las versiones en la nariz de repo.

¿Es esta la forma correcta de cambiar las versiones del repositorio? En términos más generales, ¿hay una manera eficiente de tiempo / ancho de banda para convertir un repositorio android-1.6_r1 en un android-1.6_r2 ?

( UPDATE : mi respuesta inicial implica que podemos incrementar init un nuevo repo de un anterior, por ejemplo 1.6_r1 a 1.6_r2, pero la configuración correcta debería haber sido tener un local "espejo principal" repo donde podemos señalar la referencia a Al iniciar un nuevo init. He modificado el texto a continuación para evitar la implicación incorrecta.)

En lugar de copiar, intente agregar --reference=/path/to/main/repo a su comando repo init en el nuevo directorio.

Por ejemplo, si ya tiene un directorio repo /repos/aosp-main descargado anteriormente (y sincronizado con googlesource.com), puede hacer lo siguiente:

 $ mkdir /repos/aosp-1.6_r1 $ cd /repos/aosp-1.6_r1 $ repo init -b android-1.6_r1 -u https://android.googlesource.com/platform/manifest --reference=/repos/aosp-main $ repo sync 

Y luego, si desea una versión diferente:

 $ mkdir /repos/aosp-1.6_r2 $ cd /repos/aosp-1.6_r2 $ repo init -b android-1.6_r2 -u https://android.googlesource.com/platform/manifest --reference=/repos/aosp-main $ repo sync 

De esta manera, solo necesitamos sincronizar con la dirección de googlesource.com cuando hay cosas nuevas que todavía no hemos descargado y debería usar el repo principal ya sincronizado para inicializar repos adicionales localmente.

¿Se ha cerciorado de actualizar el script de repo sólo para estar seguro?

 $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 
  • Android Source, Git / Repo y error: '... / .repo / repo / .git / clone.bundle' no se parece a un archivo de paquete v2
  • Android Library Package perdió el nombre de los parámetros de las interfaces internas
  • Repo con manifiesto local no funciona
  • Código fuente y repo de Android - ¿Qué está ocurriendo exactamente al obtener el código
  • Uso de Repo con Msysgit
  • Android Source Repo GPG clave pública no encontrada
  • Comando de repo de Android y ramas de conmutación
  • Android Studio Mejor manera de importar el módulo de otro repositorio
  • Cuando la sincronización repo, se detiene en los proyectos de recolección: 100% (293/293), hecho
  • ¿Qué es Repo y por qué Google lo usa?
  • Cambiar entre diferentes etiquetas de repo de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.