Desarrollar un proyecto de biblioteca Git que también sea un submodule de otro proyecto

Tengo una aplicación de Android en desarrollo que hace uso de un proyecto de biblioteca separado. Estos dos proyectos se almacenan en repositorys Git separados. El proyecto de la aplicación hace reference al proyecto de la biblioteca mediante el file .gitmodules .

Ahora estoy tratando de trabajar en ambos proyectos juntos (la aplicación y la biblioteca) en una nueva máquina. Cloné el proyecto de la aplicación, lo que resultó también en que el proyecto de la biblioteca también se clonara automáticamente en mi directory ~ / git /. Hasta aquí todo bien.

También observo que en Eclipse Package Explorer, la raíz del proyecto de la biblioteca tiene un hash de confirmación entre corchetes (por ejemplo, [MyLibraryName 0123ABC] ). Esto presumiblemente significa que el clon de la biblioteca proviene de un cierto punto de confirmación, y entiendo que podría actualizar esto (es decir, get los últimos commits para esta biblioteca) usando git submodule foreach git pull .

La pregunta es, ¿cuál es la mejor manera para que continúe desarrollando por separado el proyecto de la biblioteca ahora? Traté de modificar un file y ponerlo en escena, pero al usar Team-> commit, el dialog no incluía el file modificado. Supongo que esto podría tener algo que ver con que sea un submodule, señalando un compromiso particular.

¿Debería clonar el proyecto de mi biblioteca de nuevo, completamente por separado en un subdirectory diferente, e importar como un proyecto separado a Eclipse para poder trabajar en esa biblioteca?

Después de leer varias otras preguntas de SO, parece evidente que no hay una solución elegante para esto. Los pasos que finalmente tomé para resolver esto son:

  • Suponiendo que aún no lo haya hecho, clone el repository de la aplicación que hace uso de los submodules. Importe todos los proyectos al espacio de trabajo de Eclipse, incluido el repository de submodules (o repositorys). Tenga en count que el repository de submodules es un repository dentro del repository de aplicaciones principal, y no está en una twig en particular; es una reference a una confirmación particular (cabeza separada).

  • En el Explorador de packages, cambie el nombre del proyecto de submodule que se importó. Le di un nombre que se relaciona con el repository de la aplicación en el que está. Por ejemplo, para un proyecto de aplicación llamado ABCD, cambie el nombre de SomeLibrary a SomeLibrary_ABCD.

  • A continuación, clone la biblioteca por separado de su propio repository de Git. Ahora, el punto de cambiar el nombre del proyecto de submodule es que ahora es posible importar el proyecto Eclipse desde el clon independiente del repository de la biblioteca, sin que Eclipse genere el error "Algunos o todos los proyectos no se pueden importar porque ya existen en el espacio de trabajo" .

Una vez hecho esto, tenemos el proyecto SomeLibrary_ABCD que no está en una twig pero apunta a una confirmación particular, y es un submodule del proyecto ABCD. Ese submodule se actualiza utilizando el git submodule foreach git pull . Entonces, tenemos proyecto SomeLibrary, que está en una twig (por ejemplo, maestro).

Mi flujo de trabajo planificado es cambiar localmente el proyecto de aplicación para apuntar a mi proyecto 'independiente' de la biblioteca en lugar de a la versión del submodule cuando quiero hacer desarrollo en la biblioteca. Luego confirmo cambios en SomeLibrary.

Cualquier sugerencia mejor que esta (o correcciones a cualquier cosa que he mencionado) sería apreciada, pero por ahora esta es mi propia respuesta al problema.