2011-04-22 15 views
5

Tenemos varios proyectos en las obras que comparten la mayoría de sus archivos de código/configuración. El marco que estamos utilizando tiene ciertas dependencias de directorios y archivos que nos limitan a la cantidad de segregación de código común. Por ejemplo, entre 'común', 'ProjectA', y 'ProjectB' podríamos tener:Proyectos de Git con código común

/ProjectA

  • /shared_dir1
    • common1
    • fileA1
    • fileA2
  • /common_dir2
    • Common2
  • /dir3
    • fileA3
  • common3
  • fileA4

/ProjectB

  • /shared_dir1
    • common1
    • fileB1
  • /common_dir2
    • Common2
  • /dir3
    • fileB2
    • fileB3
  • common3
  • fileB4
  • fileB5

Actualmente administramos esto con 3 proyectos Git: 'común', 'ProjectA', y 'ProjectB', con los archivos comunes separan en 'común' y proyectar archivos específicos en sus propios proyectos. 'projectA' y 'projectB' tienen un .gitignore con entradas para todos los directorios comunes y todos los archivos comunes debajo de cada directorio compartido. Una secuencia de comandos copia 'común' en el proyecto que desea trabajar y el desarrollo se realiza allí. Una vez que se realiza un cambio, otra secuencia de comandos copia todos los directorios comunes y archivos comunes de nuevo en 'común'. Los cambios en 'común' y en el proyecto se pueden ver a través de 'estado de git'.

Obviamente, esto viene con sus dolores de cabeza de copiar hacia adelante y hacia atrás entre 'común', manteniendo .gitignore precisa, y el cambio de ramas dentro de 'projectA' y 'projectB'. Sin embargo, al planear el 'proyecto C-F', este enfoque parece agradable ya que podemos evitar la fusión de cambios comunes a N proyectos.

Buscando consejos sobre cómo mantener mejor este tipo de estructura.Los submódulos parecen imposibles de solucionar dada la falta de segregación, a menos que hiciéramos una gran cantidad de ellos. He visto algunas alternativas prometedoras usando enlaces simbólicos, pero eso también viene con sus problemas. Cualquier consejo sería apreciado.

+0

¿Alguna vez descubierto una manera de manejar su proyecto? – maguirre

Respuesta

1

Si usted está dispuesto a poner el código compartido un repositorio de git separado, puede que le interese git submodules. Un submódulo le permite incluir un repositorio git dentro de otro repositorio.

Aquí hay un par de enlaces:

+0

Él mencionó los submódulos: 'Los submódulos parecen imposibles de solucionar dada la falta de segregación, a menos que lo hagamos un número grande de ellos ' – manojlds

+0

Ah, debo haber pasado por alto ese último párrafo ... De todos modos, creo que los submódulos siguen siendo una buena solución para el problema que describe. –

Cuestiones relacionadas