¿Qué hace efectivamente la init de repo y la sincronización de repo?

He publicado esta pregunta en Android entusiastas, pero pensé que era el lugar equivocado para pedir, así que lo eliminó de allí y pedir "de nuevo" aquí.


Esta es una pregunta noob, y perdóneme si es así, pero sólo quiero entender los conceptos subyacentes claramente. La ayuda de repo de la lectura y la página de referencia del comando de repo de Google no ilumina realmente mucho. He entendido algunos bits de la página de referencia de Google, pero todavía necesito algunas aclaraciones más.

Siguiendo las instrucciones de cómo descargar la fuente de Android, ejecuté estos dos comandos en un shell de Ubuntu: (he tomado cuidado de todos los requisitos previos para el medio ambiente.)

~/android4.2.2$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2 ~/android4.2.2$ repo sync -j4 

Después de esperar medio día para que el repo terminara de descargar, terminé con 19G de material descargado en el directorio android4.2.2. Entonces, ¿qué sucedió exactamente, y por qué llegó a 19G cuando Google dijo que sólo debería estar esperando alrededor de 8G de archivos de origen?

repo es una secuencia de comandos python wrapper para git , su página de origen de Google lo define como

Repo – La herramienta de repositorio de Git múltiple

  1. repo init comando repo init inicializa el repo en el directorio actual. Es decir, descarga la última fuente de repo y un archivo manifest.xml que describe la estructura de directorios de los repositorios git y almacena todos estos en el subdirectorio .repo del directorio actual. En su caso, ha utilizado un argumento -b opcional que se utiliza para seleccionar la sucursal a la caja. De forma predeterminada (es decir, cuando no se utiliza el argumento -b ), se utiliza la rama maestra.

  2. repo sync actualiza el árbol de trabajo a la última revisión. Es decir, sincroniza los directorios de proyectos locales con los repositorios remotos especificados en el archivo de manifiesto. Si aún no existe un proyecto local, clonará un nuevo directorio local desde el repositorio remoto y establecerá ramas de seguimiento como se especifica en el manifiesto. Si el proyecto local ya existe, actualizará las sucursales remotas y reajustará los nuevos cambios locales en la parte superior de los nuevos cambios remotos. -j argumento se utiliza para establecer el número de trabajos paralelos a ejecutar. El valor predeterminado se puede definir en el manifiesto, y también se puede sobreescribir en línea de comandos como en su caso.

¿Por qué llegó a 19G cuando Google dijo que sólo debería estar esperando alrededor de 8G de los archivos de origen?

Eso debería ser porque además de los archivos de origen, obtendrá toda la historia de Android desde el principio del tiempo 🙂

Espero que esto ayude.

  • Android Library Package perdió el nombre de los parámetros de las interfaces internas
  • Empujar la sucursal de repo a un espejo local de AOSP
  • Uso de Repo con Msysgit
  • Después de la sincronización Repo, no hay archivos en el directorio
  • ¿Cómo puedo compartir código a través de git con otros que tengan el repositorio de Android?
  • Android - ¿Añadir una nueva biblioteca al repo?
  • Cuando la sincronización repo, se detiene en los proyectos de recolección: 100% (293/293), hecho
  • Cómo comprobar la fuente de Android de github
  • La sincronización de Repo se bloquea
  • Android Studio Mejor manera de importar el módulo de otro repositorio
  • Utilizando un local_manifest.xml con repo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.