¿Cómo configuro un proyecto de Git para que contenga otros proyectos?Proyectos dentro de proyectos usando Git
por ejemplo. Estoy trabajando en una aplicación de mapas en línea. Desarrollamos una herramienta GPS junto con un equipo en SF. Desarrollamos simultáneamente un script de Geomapping de Python junto con una preocupación diferente (que solo se preocupa por geomapping). Nuestros propios archivos centrales unen los dos y se basan en ellos para la aplicación que necesitamos.
Cada uno de los proyectos debe existir solo; las personas que tienen interés en el GPS solo tienen interés en el GPS, pero el proyecto "principal" que incluye a todos los demás debe estar accesible como proyecto.
He pasado algún tiempo tratando de entender los submódulos, pero parecen tener demasiada independencia para lo que se necesita.
Además, si es posible, sería bueno si cada uno de esos proyectos pudiera contener uno o dos scripts superpuestos. ¿Podría un proyecto de Git incluir un archivo que no forma parte de su 'raíz' para que cuando ambos equipos actualicen ambos archivos, ambos puedan beneficiarse?
¿Es esto factible con Git? Con Mercurial? ¿Importa el anfitrión (GitHub, Gitorious)?
Tengo la idea de usar Subversion para el 'padre' - ignorando las carpetas .git, y usando Git para los proyectos (ignorando las carpetas .svn) - pero eso es solo un último recurso.
edición:
Para explicar por qué no quiero submódulos:
- Cuando los usuarios descargan, la cremallera no incluye los submódulos (here & here). Lo mismo cuando incluso los colaboradores intentan configurar el proyecto. Este es un show stopper.
- Los submódulos están congelados, no retoman (fácilmente) la última versión del proyecto que se está señalando.
- Otras razones como se señala en las respuestas fantásticas a continuación y en este monologue at NoPugs.
Subtree-merging (presentado por Paul, a continuación) no funcionará: es difícil actualizar la fuente [de un subárbol] dentro del proyecto en el que se fusiona, y esa fuente debe residir fuera de la carpeta 'raíz' del proyecto. Al ser una aplicación web, es vital que todas mis páginas se vinculen internamente a una carpeta dentro de ellas, y que las pruebas y actualizaciones se realicen directamente dentro de esa carpeta. (Espero que esto sea claro y útil para otros.)
Todavía estudiando la configuración de "sucursales remotas", pero otras ideas siguen siendo bienvenidas.
Las razones por las que estoy en contra de git-submodule: a) No puedo hacer que funcione. GIT Bash simplemente cuelga el comando para agregar el submódulo. b) Los submódulos deben actualizarse de manera independiente. Mejor para mí tener la última versión de los submódulos automáticamente. c) ¿Los submódulos tienen el código real o un puntero? – SamGoody
Paul - Tienes tutoriales para el segundo método. Estoy encontrando a GIT lo suficientemente difícil. Además, ¿Importa que los subproyectos se almacenen localmente dentro del proyecto principal con estos métodos (superclase/clases/subproyecto1)? – SamGoody
El método de Subárbol necesita tenerlos en un subdirectorio separado, pero eso puede ser en cualquier lugar. Git rastrea todo el árbol del proyecto en lugar de archivos individuales, por lo que cualquier disposición de archivos funciona para el método de bifurcación remota. No sé de una reseña del último método; Agregué enlaces para el método de subárbol. – Paul