Clonación de fonts de Android a un server de repository local

Quiero desarrollar sobre Android usando un server de repository local de Android. Necesito agregar varios repositorys git nuevos a la jerarquía de gits, y tengo que modificar las fonts existentes de Android para una adaptación personalizada de Android.

¿Cuál es la forma "correcta" de clonar todo el tree de fonts de Android de los repositorys de git, de modo que pueda enviar / extraer a / desde un server de repository local común y aún así extraer fácilmente nuevos cambios de Android en sentido ascendente?

Estoy específicamente buscando consejos sobre cómo usar el script de repo para la interacción con mi propio server, y sobre cómo configurar el repository de git de manifest y administrar las twigs en él.

En tu server git

  1. repo init -u https://android.googlesource.com/platform/manifest –mirror # –mirror es la key
  2. synchronization de repository

Debido a que especificó –mirror, todos los repos creados serán reposs "simples", que es la forma correcta de crear un espejo a less que sea un git uberlord.

En tu cliente:

  1. repo init -u git@git.yourserver.com: platform / manifest.git # puede usar un medio diferente para acceder a su server de git; Tengo que asumir algo para este ejemplo.

  2. no hay synchronization de repo todavía. Su manifiesto probablemente sea incorrecto. Mire el file simbólico .repo / manifest.xml … cat it y lea en la parte superior el <remote fetch="" … probablemente apunte a android.googlesource.com. pero si dice '..' Creo que eso significa 'volver a mi server', por lo que puede pasar al paso 6). Pero si apunta hacia otro server (no el suyo), entonces vaya al paso 3.

  3. cd .repo / manifiestos
  4. vim .repo / manifiestos / default.xml (o cualquiera que sea su manifest.xml activo).
  5. Corregir el <remote fetch="CHANGE ME" default.xml para señalar a tu server git
  6. Intentar una synchronization de repository. Solo debe extraerse de su repository. De lo contrario, detenga la synchronization de repository e intente reparar default.xml nuevamente.
  7. Una vez que vea el trabajo de synchronization de repo en su máquina de testing, vuelva a enviar default.xml en ( git commit; git push ), para que otros en el equipo tengan experiencia de 'no-manifestar-manifestar' cuando repo init; repo sync repo init; repo sync desde su server.

Una vez que vea un repo init; repo sync "no manifestar edición" repo init; repo sync repo init; repo sync work, luego vuelva a su default.xml y simplemente comience a agregar nuevos elementos XML junto con las toneladas de otros elementos existentes del proyecto Android; estos nuevos elementos apuntarán a sus proyectos personalizados. Para estos nuevos proyectos, simplemente inicielos como lo haría normalmente, y asegúrese de que tengan una twig que coincida con la misma <default revision="whatever_branch_you_see_here" para que una repo sync cuando encuentre estos nuevos proyectos.

Si efectivamente establece una bifurcación pnetworkingeterminada en su elemento manifest <default revision="" , simplemente haga que todos configuren una bifurcación local para seguir la bifurcación remota especificada en el atributo de revisión. Entonces, por ejemplo, si <default revision="branch_a" está en su manifiesto, después de hacer una synchronization de repos, cuando ingresa en un subproyecto de interés, haga a:

git checkout -b branch_a origin/branch_a

Entonces, si el usuario git push 's (no hay ningún command de repo para enviar, hasta donde yo sé), y si alguien más hace una ./repo sync después de ese empujón, obtendrán esos cambios del usuario original … siempre y cuando esté utilizando el mismo manifiesto y, de hecho, empujando a la revisión pnetworkingeterminada (bifurcación) especificada por ese manifiesto.

Esa es la receta más simple. Si desea crear twigs de características reales, tendrá que editar su manifiesto con más regularidad si desea que la 'synchronization de reposiciones' simplemente funcione … y tendrá que comunicarse con el rest del equipo para get su versión de el manifiesto cuando haces eso. Alternativamente, si se trata de uno o dos repositorys git que está tocando, entonces podría renunciar a la synchronization repo y git push / pull como es normal en esos repositorys e ignorar el rest del tree silencioso para los times en los que se está iterando. Esto suena, en última instancia para mí, como un path más simple. Ignoraría el repos todo lo que pudiera; solo lo usa para sincronizaciones de "todo proyecto" y lo deja solo para los momentos en que se está enfocando en 1 o 2 proyectos.

En cuanto a get actualizaciones desde la parte superior. Creo que la manera de hacerlo es cambiar tu default.xml para que apunte a tu location original de git (como android.googlesource.com), hacer una synchronization de repository para hacer que todas las cosas nuevas se fusionen, y una vez hecho esto, synchronization, comprométase de nuevo a su repository. No he hecho esto todavía; entonces no puedo ser muy específico, pero así es como planeo hacerlo.

Estoy ignorando los detalles de administración del server de arriba. Por ejemplo, debe llamar al repository init en un determinado directory en su server git para hacer que sea un repository git disponible; Supongo que sabes cómo administrar tu server de git.