2010-05-24 15 views
6

estoy planeando mi estructura de directorios de Apache proyecto Linux// php web como esta:Componente estructura de directorios del proyecto basado en la web con git y enlaces simbólicos

Sólo www.example.com/webroot/ será expuesto en Apache

www.example.com/ 
    webroot/ 
    index.php 
    comp1/ 
    comp2/ 
    component/ 
    comp1/ 
     comp1.class.php 
     comp1.js 
    comp2/ 
     comp2.class.php 
     comp2.css 
    lib/ 
    lib1/ 
     lib1.class.php 

la Los directorios component/ y lib/ solo estarán en la ruta php.

Para hacer que los archivos css y js sean visibles en el directorio webroot, planeo usar enlaces simbólicos.

webroot/ 
    index.php 
    comp1/ 
     comp1.js (symlinked) 
    comp2/ 
     comp2.css (symlinked) 

me trataron siguiendo estos principios:

  • diseño de componentes y bibliotecas, no por tipo de archivo y no por "público' o 'no pública', index.php es una excepción que es esto. para facilitar el desarrollo.
  • expone el conjunto mínimo de archivos en un directorio web público y hace que todo lo demás sea inaccesible para la web. Enlace simbólico de archivos que deben ser públicos para los componentes y libs a una ubicación pública, pero reflejando el diseño Así que el componente y la estructura de la biblioteca también es visible en el código html resultante en los enlaces , lo que podría ayudar al desarrollo.
  • git el uso debe ser seguro y siempre funciona. que no estaría mal seguir algún procedimiento para añadir un enlace simbólico a git, pero después de que la comprobación hacia fuera o el cambio de las ramas deben ser manejados de manera segura y limpia

Cómo se GIT manejar el enlaces simbólicos de los archivos individuales correctamente, ¿hay algo que considerar?

Cuando se trata de imágenes, tendré que vincular directorios, ¿cómo manejar eso con git?

component/ 
    comp3/ 
     comp3.class.php 
     img/ 
     img1.jpg 
     img2.jpg 
     img3.jpg 

, debe estar enlazado aquí:

webroot/ 
    comp3/ 
     img/ (symlinked ?) 

Si utiliza enlaces simbólicos para los que tiene desventajas que tal vez podría mover imágenes a la web raíz/árbol directamente, lo que podría romper el primer principio de la tercera (GIT practicabilidad).

Así que esta es una pregunta de git y de enlace simbólico. Pero me gustaría escuchar comentarios sobre el diseño de php, quizás quieras utilizar la función de comentario para esto.

Respuesta

2

Tan pronto como sea necesario para reutilización un conjunto de archivos en otro lugar, que es cuando se debe empezar a pensar en términos de components o (en Git) submodules

En lugar de administrar webroot y comp y lib dentro de la misma repo (que es el SVN o la "Centralized way" for CVCS), se define:

  • n repos, una pe r componente que necesita volver a utilizar (para 'img' sería un repositorio de Git reutilizado como un submódulo dentro de webroot, por ejemplo)
  • proyecto principal para hacer referencia a la revisión exacta de los submódulos que necesita.

Esa es una de las ventajas de submódulos de enlace simbólico: debe hacer referencia a uno revisión exacta, y si ese componente tiene algunas evoluciones de su propia, que no se ve inmediatamente (no hasta que actualice su submódulo de todos modos)
Con un enlace simbólico, verá cualquier estado es el conjunto de archivos en el otro extremo de ese enlace.

+0

Gracias por señalar esto. No había pensado en ver los componentes como proyectos separados. Pensaré en dividir los componentes en un momento posterior, pero por ahora los mantendré juntos en un repositorio, lo que me ayuda a mantenerlo simple: karlthorwald - aka – user89021

+0

No estoy seguro, pero esta solución no toma en cuenta ese ¿Por qué razón el enlace simbólico era para mantener casi todos los archivos en un directorio no público no expuesto? Haré la pregunta más clara ahora. - karlthorwald - aka – user89021

+0

@ user89021: no hay problema: puede combinar submódulos con sylink (enlace simbólico a un submódulo!). La clave a tener en cuenta aquí es que Git no debe contener todo en * one * repo: http://stackoverflow.com/questions/984707/what-are-the-git-limits/984973#984973 – VonC

Cuestiones relacionadas