2011-03-28 5 views
7

Uso git con submódulos, y tengo dificultades para entender cómo organizar mis archivos. Desarrollo en PHP y uso pruebas unitarias. Así que ahora mismo, yo uso esta organización para cada módulo:Usando git y submódulo, ¿qué es una buena estructura de carpetas?

  • src/
  • pruebas/

Eso parece una idea brillante, pero el problema es que cuando hago un "submódulo git agregar "a un proyecto, tendré esa ruta: project/modules/News/src/index.php

La carpeta src/es realmente problemática.

¿Debo simplemente poner todos mis archivos en el directorio raíz del módulo y tener una carpeta de pruebas/mezclada en la fuente? Para mí eso suena mal. Qué estás haciendo ?

Editar: El src/Folder es problemático debido a la carga automática. No debería tener que poner "src" en todo mi nombre de clase ...

+0

Pregunta sobre la edición: El problema es que desea que los nombres de clase coincidan con la estructura de la carpeta. Ofc cada módulo también debería tener sus propias pruebas y eso es un problema porque no se puede incluir (como BarModule/src => module/Bar) con los submódulos de git? (solo comprobando que obtengo tus derechos de requisitos) – edorian

Respuesta

4

El diseño de su carpeta es casi irrelevante siempre que el autocargador pueda encontrar sus archivos de alguna manera. Si está utilizando la convención PEAR para asignar nombres de clase a sus archivos fuente, puede agregar el directorio src a la ruta de inclusión o apilar un segundo autocargador. Entonces no tienes que agregar src a los nombres de las clases.

La alternativa a la convención PEAR sería utilizar una asignación estática entre archivos y clases. Hay a tool that can automatically generate such an autoloader for you at GitHub.

El enfoque del autocargador estático también se utiliza en PHP Project Wizard. Esa herramienta creará carpetas de prueba y src, que incluyen your phpunit config y build file to connect your project with Jenkins CI. Es un paquete conveniente.

En cuanto a la inclusión de submódulos, considere ponerlos en una carpeta lib o ext. Un ejemplo de cómo se ve eso se puede encontrar en el phpdox project at GitHub. Asegúrese de mirar también el main bootstrap file para ver cómo incluir los diversos cargadores automáticos en ese momento.

+0

Tiene razón, excepto que puedo tener más de 30 módulos en un proyecto. Así que voy a apilar más de 30 cargadores automáticos, ¿no sería terrible? Ya conozco (y colaboro) el proyecto phpdox;) Pero ese no es el mismo tipo de submódulo. En mi caso, un submódulo se parecerá más a un plugin de WordPress. También este proyecto debe ser php 5.2 :( – FMaz008

+0

@ FMaz008 ¿por qué no usas el PHPAB de TheSeer y lo dejas iterar sobre todos los proyectos, incluidos tus 30 submódulos y luego usas ese autocargador único? IIRC PHPAB también tiene una plantilla para 5.2, entonces la versión no debería ser un problema. – Gordon

3

Lo que hice cuando me enfrenté a este problema fue crear una carpeta llamada proveedores y colocar todos los submódulos en eso. Luego hice un enlace simbólico usando rutas relativas a los directorios a las ubicaciones que los quería en mi código. Puede enviar los enlaces simbólicos a git y seguirán funcionando cuando otros extraigan el repositorio. Por supuesto, esto solo funciona si está usando un SO basado en * nix.

Por ejemplo:

modules/ 
vendor/module1/src/ 

Podría ser enlazado simbólicamente como tal (desde el directorio de módulos):

ln -s ../vendor/module1/src module1 

No estoy seguro si esto resuelve su problema o no.

+0

Pero, ¿qué ocurre si algunos desarrolladores están usando Windows? Symlink no está disponible ... – FMaz008

+0

Algunas versiones de Windows tienen algo así como enlaces simbólicos, puedes probarlos. No desarrollo en Windows, así que nunca lo intenté. – MitMaro

0

No tendré las pruebas en un módulo por separado. Guárdelo en el mismo repositorio.

+1

Nunca he planeado poner mi prueba en un repositorio diferente. Todos los módulos se incluyen con sus propias pruebas. – FMaz008

Cuestiones relacionadas