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 
  • ¿Qué hace efectivamente la init de repo y la sincronización de repo?
  • ¿Qué es Repo y por qué Google lo usa?
  • Uso de Repo con Msysgit
  • ¿Cómo obtengo los orígenes de la API de Java?
  • ¿Cómo mostrar las ramas disponibles en el árbol de fuentes de Android?
  • Cómo reanudar la sincronización de repo
  • Repo: ¿no se ha encontrado el comando?
  • La sincronización de Repo se bloquea
  • Android Source, Git / Repo y error: '... / .repo / repo / .git / clone.bundle' no se parece a un archivo de paquete v2
  • Repo con manifiesto local no funciona
  • ¿Cómo configurar un repositorio de fuente de Android mientras hospeda los árboles git como repositorios privados en github?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.