2012-07-06 15 views
12

Tengo algunos problemas para trabajar con zf y git en un proyecto bastante grande. La aplicación zf tiene aproximadamente 20 módulos y, por el momento, todo está almacenado en un único repositorio de git. Por lo tanto, cuando finaliza la aplicación, puede extraer todo el conjunto de módulos, hojas de cálculo, archivos js, etc.Trabajando con zend framework y git en proyectos grandes

Lo que me gustaría hacer es algo así como en wordpress o drupal: tiene su aplicación principal y para cada módulo tienes un repositorio git separado que compras en el directorio de módulos. Después de pagar, trabajas en él y luego lo comprometes. Pero con zend no puede hacer esto porque los archivos multimedia (css, js, images) se almacenan de manera diferente directorio/public (cada módulo puede tener su propio css, js archivos en/public/_MODULE_NAME_/css por ejemplo) Estoy trabajando en/application/modules /.

Entonces, la pregunta es ¿cómo trabajas con las aplicaciones modulares zend framework y git?

+3

Siempre puedes poner los recursos estáticos (CSS, JS, etc.) dentro del directorio de tu módulo y copiarlos a 'public' como una tarea de compilación o crear enlaces simbólicos en' public' – Phil

+0

me suena como un problema similar que yo una vez tuvo: http://stackoverflow.com/questions/6680768/how-do-i-organize-my-git-repo – eckes

+0

En ZF2 los módulos son completamente independientes, se pueden unir como un submódulo (repositorio completamente separado), pero en ZF1 con su estructura dada esto no es posible. – bedeabza

Respuesta

2

Por lo general las arreglo para hacer frente a una configuración de enlaces de software, que tiene un proyecto de super en la Carpeta Web y enlazar simbólicamente los módulos de una carpeta diferente en:

* SuperProject/ 
    + application/ 
    + ModuleA --> ../../Modules/ModuleA/application 
    + ModuleB --> ../../Modules/ModuleB/application 
    + config/ 
    + views/ 
    + layouts/ 
    + public/ 
    + ModuleA --> ../../Modules/ModuleA/public 
    + ModuleB --> ../../Modules/ModuleB/public 
    + css/ 
    + js/ 
    + library/ 
+ Modules/ 
    * ModuleA/ 
    + application/ 
     + config/ 
     + views/ 
     + models/ 
    + public/ 
     + css/ 
     + js/ 
    * ModuleB/ 
    + application/ 
     + config/ 
     + views/ 
     + models/ 
    + public/ 
     + css/ 
     + js/ 

Los directorios con estrellas son repositorios, la SuperProject/pública es el punto de entrada para el servidor http (con symlinks follow habilitados por supuesto). Obviamente no agrega ningún Módulo-Archivos en su repositorio de SuperProject, sino solo cambios en los directorios globales (por ejemplo, application/config /); en el mejor de los casos, ignora los Módulos a través del archivo .git_ignore. Como este método se basa en enlaces simbólicos, solo funcionará en sistemas unixoid. Si bien no es perfecto, es la menor molestia.

+0

con respecto a los enlaces simbólicos: podría funcionar en Win32 con uniones (http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx, http://en.wikipedia.org/wiki/Symbolic_link # NTFS_Junction_points)? – eckes

+0

@eckes esto podría funcionar, todavía no lo he probado. Pero a partir de una investigación rápida, parece implementar la misma función que un enlace simbólico unixoide. ¿Tienes un sistema de Windows para probarlo? – Lars

+0

solo XP. Y lo realmente interesante (enlaces simbólicos NTFS que admiten también archivos, no solo carpetas, http://en.wikipedia.org/wiki/NTFS_symbolic_link) no funciona allí, pero necesita al menos Vista. – eckes