Añadiendo nuevo git al repository de AOSP

mydevice/ un nuevo dispositivo mydevice/ en $AOSP_ROOT/device/ . Estoy tratando de agregar el git en $AOSP_ROOT/.repo para el seguimiento local, lo encontré extremadamente útil si puedo ver los cambios al realizar un repo status repo diff o repo diff . Estos son los pasos que probé:

  1. ejecute git init en la carpeta mydevice , deje los cambios sin confirmar
  2. Agregue el proyecto a $AOSP_ROOT/.repo/manifest.xml

Desafortunadamente, cuando realizo el repo status mi proyecto no se refleja en el resultado. ¿Qué hice mal?

Digamos que $HOME es /home/consy/ y $AOSP_ROOT es /home/consy/aosp/ .

 #init a local bare repo as the remote repo of `mydevice` cd $AOSP_ROOT/device/ git init mydevice git commit --allow-empty -m 'init repository' cd $HOME git clone $AOSP_ROOT/device --bare -- mydevice.git cd $AOSP_ROOT/device rm -rf mydevice #create .repo/local_manifests (this is a feature of repo) mkdir -p $AOSP_ROOT/.repo/local_manifests #create a manifest under `local_manifests`. #You can name it whatever you like except that the manifest's content should be like: <?xml version="1.0" encoding="UTF-8"?> <manifest> <remote fetch="file:///home/consy/" name="this"/> <default remote="this" revision="master"/> <project name="mydevice" path="device/mydevice"/> </manifest> 

Ahora cuando ejecuta la repo sync , los proyectos definidos en el manifiesto local se agregarán a $AOSP_ROOT como proyectos adicionales. Puede usar commands de repos como repo status para manipular estos proyectos adicionales. El repository se clonará desde /home/consy/mydevice.git y se desprotegerá en $AOSP_ROOT/device/mydevice . Después de realizar nuevas confirmaciones en $AOSP_ROOT/device/mydevice , puede ejecutar git push this <ref>:<ref> para cargar las confirmaciones en /home/consy/mydevice.git . Más tarde, cuando crea que está listo para publicar este nuevo repository en un host real como Github o su propio Gerrit, puede agregar un nuevo control remoto a Github o Gerrit y avanzar. A continuación, agregue la definición del proyecto <project name="mydevice" path="device/mydevice"/> al manifiesto principal que utiliza cuando repo init , confirma el cambio y presiona al repository de manifiesto remoto. Después de eso, puede eliminar el manifiesto local bajo $AOSP_ROOT/.repo/local_manifests para evitar un error de proyecto duplicado.

En cuanto a la function de manifiesto local, vea Local Manifests en https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.txt .