2011-11-15 45 views
8

Tengo una situación en la que tengo que crear un conjunto de copias estáticas del código fuente de Android de diferentes versiones de lanzamiento.La mejor manera de cambiar las versiones del repositorio de Android de manera eficiente una vez descargado utilizando repo/git

Simplemente tomar repo init -b $version; repo sync llevará una eternidad (init requiere interacción, y las sincronizaciones desperdiciarán mi ancho de banda en todas las versiones).

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

ndk/build/platforms/android-3/arch-arm/usr/incl
Aborting
Syncing work tree: 100% (153/153), done.

error: development/: platform/development checkout caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1 Repo sync returned FAIL on android-2.1_r2.1s

que he encontrado algunos mensajes con errores similares que indican que esto podría ser causado por reporto estar fuera de sincronización con los archivos "modificados" en el sistema de archivos, pero me Me pregunto si mis errores son causados ​​por el cambio de versiones en la nariz del repositorio.

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

Respuesta

0

¿Se ha asegurado de actualizar el script del repositorio solo para estar seguro?

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo 
$ chmod a+x ~/bin/repo 
+0

Sí, mi configuración completa está actualizada en las últimas 24 horas. – bhoward

9

(ACTUALIZACIÓN: mi respuesta inicial implica que podemos incremental init una nueva operación de un ejercicio anterior, por ejemplo 1.6_r1 a 1.6_r2, pero la configuración correcta deberíamos haber estado tener un "espejo principal locales "repo donde podemos apuntar la referencia a cuando se inicia 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 al comando repo init en el nuevo directorio.

Por ejemplo, si ya tiene un acuerdo de recompra en /repos/aosp-main directorio descargado anteriormente (y sincronizado con googlesource.com), que puede hacer:

$ 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 quieres 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 tenemos que sincronizar con la dirección googlesource.com cuando hay cosas nuevas que aún no hemos descargado y solo debe usar el repositorio principal ya sincronizado para inicializar repos adicionales localmente.

Cuestiones relacionadas