La forma correcta de modificar la fuente de Android con git

Descargué el código fuente de Android usando la herramienta de repository de google y, por lo que puedo ver, el tree fuente de Android está separado de muchos proyectos de git y la herramienta de repos es responsable de mantenerlos todos.

Empecé a modificar la fuente de Android y he estado buscando una forma correcta de realizar un seguimiento de todos los cambios que estoy haciendo.

El problema es que cuando modifiqué la fuente, no permanecí en el context de un solo proyecto, modifiqué el código de muchos proyectos diferentes juntos. Por lo tanto, comprometerse con cada proyecto por separado queda fuera de escena. Necesito una forma de realizar un seguimiento de todos los files fuente y no en un proyecto.

La solución que se me ocurrió (y aceptaré gustosamente otras ideas para hacer esto) es crear un proyecto git desde el tree raíz del código fuente que includeá todos los files.

Y así lo hice desde el directory raíz de origen de Android:

git init git add -A git commit -m "Initialize" git branch iss1 git checkout iss1 /* Making some changes */ git add -u git commit -m "Bla bla" 

Se veía bien y todo, pero, cuando volví a ver al maestro, ¡los cambios no desaparecieron!

Así que hice diff entre iss1 a master y la salida fue:

 diff --git a/frameworks/av b/frameworks/av index 6cd6792..5cb8b7c 160000 --- a/frameworks/av +++ b/frameworks/av @@ -1 +1 @@ -Subproject commit 6cd6792a3289c0c50542d8113068478dbc3a5ad0 +Subproject commit 5cb8b7cb86f3fb085725fb895fde7aec78a8f9df diff --git a/frameworks/base b/frameworks/base index 207cffe..cc7e875 160000 --- a/frameworks/base +++ b/frameworks/base @@ -1 +1 @@ -Subproject commit 207cffe95a868ea21b74dd54e3ef7821162ce870 +Subproject commit cc7e8757d84646c043379f13a44125f3a2acd99b diff --git a/frameworks/native b/frameworks/native index 6ee97e7..d1d57ab 160000 --- a/frameworks/native +++ b/frameworks/native @@ -1 +1 @@ -Subproject commit 6ee97e74d2c972dec2aa6a2f231b718eae54898f +Subproject commit d1d57ab83b9eb31bbe698b634199e4a61e762168 diff --git a/frameworks/opt/telephony b/frameworks/opt/telephony index 93faaed..9b688da 160000 --- a/frameworks/opt/telephony +++ b/frameworks/opt/telephony @@ -1 +1 @@ -Subproject commit 93faaed9056491c551ef7046e9e1de7d6397e95c +Subproject commit 9b688da398d478de1f79671b932a93629d5b2246 diff --git a/system/core b/system/core index 68c1968..3bc3d40 160000 --- a/system/core +++ b/system/core @@ -1 +1 @@ -Subproject commit 68c19686e8f9b5a88e3b2729a453d03516be79f1 +Subproject commit 3bc3d40faf78fc9ce5f11da745727730d8b30493 diff --git a/system/security b/system/security index d9adda9..7524006 160000 --- a/system/security +++ b/system/security @@ -1 +1 @@ -Subproject commit d9adda97221fe2b7a1be38d8ab1dc954c630a1b9 +Subproject commit 7524006ad5343197b06e006871cf07cc71883dc9 

Parece que tiene que hacer algo con los subproyectos dentro del código fuente, pero no entiendo qué.

Entonces, ¿cómo consigo una forma adecuada de modificar todo el código fuente y mantener un logging de los cambios?

La forma en que elegí usar, y la mejor manera que veo hasta ahora, es realmente usar el

 repo forall -c <command> 

command que le permite ejecutar un command en todos los proyectos de git en el AOSP.

Así que comencé revisando para dominar:

 repo forall -c "git checkout master" 

Y luego, creando una nueva twig y revisándola:

 repo forall -c "git branch iss1" repo forall -c "git checkout iss1" 

Y luego, hacer algunos cambios, agregar y comprometerse …

 repo forall -c "git add -u" repo forall -c "git commit -m BLA" 

Y eso está funcionando muy bien hasta ahora 🙂

Deberías juntar todos los repositorys diferentes que componen el proyecto. Estos se encuentran en el file de manifiesto en la carpeta .repo (consulte la carpeta local_manifests aquí también). Cambie estos files de manifiesto para vincular a sus propias horquillas Github. Luego puede modificar lo que quiere y comprometerlo con sus propios repositorys ahorquillados. Si desea revertir sus cambios a la última synchronization, simplemente ejecute

 repo forall -vc "git reset --hard" 

desde su carpeta de proyecto raíz. Tenga en count que los cambios que ya se han comprometido con sus horquillas no se revierten, ya que esto extraerá las fonts de esas horquillas.