¿Qué es Repo y por qué lo usa Google?

Cuando quería get el código fuente de Android, sabía que tenía que usar "repo". Entonces, ¿qué es repo? ¿Por qué usan el repository y no solo usan GIT ?, y ¿hay una GUI para el repository que me permite pausar / reanudar la synchronization, porque cada vez que me desconecto ocasionalmente parece que el repository comienza a sincronizarse desde el principio!

Repo y git, lo que son, para qué sirven, se explican en source.android.com

Para trabajar con el código de Android, deberá usar tanto Git como Repo.

Git es un sistema de control de versiones de código abierto diseñado para manejar proyectos muy grandes que se distribuyen en varios repositorys. En el context de Android, utilizamos Git para operaciones locales como ramificación local, confirmaciones, diffs y ediciones.

Repo es una herramienta que creamos encima de Git. Repo nos ayuda a gestionar los muchos repositorys de Git, realiza las cargas en nuestro sistema de control de revisiones y automatiza partes del flujo de trabajo de desarrollo de Android. Repo no pretende replace a Git, solo para facilitar el trabajo con Git en el context de Android. El command repo es un script ejecutable de Python que puede colocar en cualquier lugar de su ruta.

No hay GUI para Repo, por lo que puedo decir, pero hay un poco de orientación en el sitio anterior para controlar lo que Repo está haciendo desde la command-line.

Como se menciona en la página web de Android, el repo no reemplaza a git . Es solo una herramienta sobre git y te ayuda a administrar múltiples repositorys git.

Por ejemplo, supongamos que tengo un proyecto grande que tiene muchas funciones y tengo varios equipos trabajando en cada característica y creé un repository para cada característica. Por ejemplo, supongamos que mis repositorys son wifi , telephony , power management , etc. Esta acción tiene sentido cuando sus características tienen diferentes ciclos de vida. Por ejemplo, si no tocaré la function wifi en mi próximo lanzamiento, modificaré todo el rest. Entonces, bajo este escenario, mi proyecto o producto se distribuye en varios repositorys de git diferentes.

Entonces, para get una foto centralizada de mi proyecto (un momento específico de mi proyecto, por ejemplo, un hito), necesito get la revisión (git hash o tag) de cada repository. Recuerde que tenemos un repository para cada característica. Manualmente podría hacerlo, pero podría ser muy doloroso. Entonces, con el repository puede tener un MANIFEST que vincule a todas las revisiones de cada repository de git (uno para cada característica) y tenga una image específica de todo mi proyecto.

Simplemente, podría decir que es una forma de gestionar repositorys git centralizados múltiples que están descentralizados.

Con el repository tienes más funciones, no solo para pagar en un punto específico. Para get más información, vaya a http://source.android.com/source/using-repo.html .

En cuanto al punto de pausa y reinicio, mientras que en una window de terminal realiza una synchronization de repos, puede presionar "ctrl + z" para pausar la synchronization de repository. Para reiniciar, simplemente escriba "fg" en la misma window.

Ir:

http://source.android.com/source/git-repo.html

y puedes download el script de repo . Es un script Python que usa el command git para hacer una revisión distribuida del código fuente.

Después de haber ejecutado la repo sync , haga un ps -auwf para ver los processs:

Para el mío, vi:

 \_ python -E /sde3/root/download/android/android/.repo/repo/main.py --rep \_ git fetch korg \_ git fetch korg \_ git index-pack --stdin -v --fix-thin --keep=fetch-pack 5227 on 

Sí, la repo sync rompe a menudo. Pero es robusto, solo reinicie el command y reanudará la synchronization nuevamente: los que se han actualizado no se volverán a aplicar, por lo que saltará sobre ellos y continuará con el rest.

la synchronization de repo tiene varias opciones útiles:

-f se recupera de las desconexiones

-c solo carga la twig que solicitó

-j <#CPUS> acelera la synchronization aumentando la cantidad de cpus utilizada por el command