He escrito un marco PHP y un CMS encima del marco. El CMS depende del marco, pero el marco existe como una carpeta independiente dentro de los archivos CMS. Me gustaría mantenerlos como proyectos separados en GitHub, pero no quiero tener el lío de actualizar el proyecto CMS cada vez que actualizo el marco. Idealmente, me gustaría que el CMS de alguna manera extraiga los archivos del marco para su inclusión en un subdirectorio predefinido en lugar de comprometer físicamente esos archivos.
¿Es esto posible con Git / GitHub? Si es así, ¿qué necesito saber para que funcione? Tenga en cuenta que estoy en un nivel muy, muy básico de experiencia con Git: puedo hacer repositorios y comprometerme usando el complemento de Git para Eclipse, conectarme a GitHub, y eso es todo. Actualmente estoy trabajando solo en los proyectos, por lo que no he tenido que aprender mucho más sobre Git hasta ahora, pero me gustaría abrirlo a otros en el futuro y quiero asegurarme de tenerlo bien.
Además, ¿cuál debería ser mi flujo de trabajo ideal para proyectos con dependencias? Cualquier consejo sobre ese tema también sería muy apreciado. Si necesita más información sobre mi configuración, solo pregunte en los comentarios.
fuente
Respuestas:
Primero, si realmente quieres usar git para esto, entonces considera usar su funcionalidad de Submódulo :
La página vinculada contiene una discusión detallada que incluye ejemplos de cómo usarla exactamente.
Dicho esto, recomendaría no usar su sistema de control de versiones para la gestión de dependencias y más bien comenzar a usar una herramienta de compilación que pueda manejar estas cosas por usted, como Maven o Ant . Incluso hay una herramienta de compilación específica de PHP en desarrollo llamada Phing , pero aún no la he usado. Se menciona en un artículo que analiza su pregunta: ¡Control de versiones! = Gestión de dependencias .
La razón por la cual las herramientas de compilación pueden encajar mejor a largo plazo es porque a menudo también admiten diferentes tipos de repositorios, bibliotecas externas (y diferentes ubicaciones) y comprobaciones exhaustivas. Sin embargo, si solo desea integrar estas dos bibliotecas y no desea problemas adicionales, el enfoque de submódulo probablemente sea suficiente.
fuente
Git Submodules es una excelente manera de administrar las dependencias de proyectos git.
Si está buscando otro enfoque:
Composer puede hacer todo esto por ti. Composer es un administrador de dependencia para php. Su sintaxis es de json. Es bastante fácil y barato de usar.
Más sobre compositor:
En la página de documentación , puede encontrar un ejemplo de cómo se construiría su archivo composer.json:
Una vez que haya creado su archivo composer.json y composer.lock para su proyecto, puede instalar sus dependencias fácilmente:
composer.phar install
o actualizarlos:composer.phar update
o crear un proyecto particular de packagist :composer.phar create-project acmeproject
fuente
Recientemente comencé a usar una herramienta llamada Pundle para administrar las dependencias de mi proyecto. Es compatible con una versión PHP, paquetes PEAR, repositorios Git y repositorios SVN como dependencias y permite especificarlos fácilmente a través de un "archivo Pundlefile".
También debe configurar sus dependencias para que los pagos de Git / SVN se coloquen en un directorio que no esté bajo Control de versiones (por ejemplo, "proveedor") para que tenga un nuevo comienzo en cada pago y para mantener la inclinación del repositorio de su proyecto.
fuente