Dependencias del proyecto Git en GitHub

14

He escrito un marco PHP y un CMS en la parte superior del marco. El CMS depende del marco, pero el marco existe como una carpeta independiente dentro de los archivos del CMS. Me gustaría mantenerlos como proyectos separados en GitHub, pero no quiero tener el lío de actualizar el proyecto de CMS cada vez que actualizo el marco. Idealmente, me gustaría que el CMS extraiga de alguna manera los archivos del marco para incluirlos en un subdirectorio predefinido en lugar de cometer 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 básico de experiencia con Git. Puedo crear repositorios y usar el complemento Git para Eclipse, conectar con 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 que lo hago 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.

    
pregunta VirtuosiMedia 01.05.2011 - 04:24

3 respuestas

11

Primero, si realmente quieres usar git para esto, entonces considera usar su Funcionalidad de submódulos :

  

El soporte de submódulos de Git permite que un repositorio contenga, como un subdirectorio, una verificación de un proyecto externo. Los submódulos mantienen su propia identidad; el soporte de submódulos simplemente almacena la ubicación del repositorio de submódulos y la ID de confirmación, por lo que otros desarrolladores que clonan el proyecto que lo contiene ("superproyecto") pueden clonar fácilmente todos los submódulos en la misma revisión. Las verificaciones parciales del superproyecto son posibles: puedes decirle a Git que no clone ninguno, algunos o todos los submódulos.

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 administració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 construcción específica para PHP en desarrollo llamada Phing , pero todavía no la he usado. Se menciona en un artículo que trata su pregunta: Control de versión! = Gestión de dependencia .

La razón por la que las herramientas de compilación pueden ajustarse mejor a largo plazo es porque a menudo también admiten diferentes tipos de repositorio, bibliotecas externas (y diferentes ubicaciones) y comprobaciones exhaustivas. Sin embargo, si solo desea integrar estas dos bibliotecas y no desea ningún problema adicional, el enfoque de submódulo es probablemente suficiente.

    
respondido por el Deckard 01.05.2011 - 07:30
6

Git Submodules es una excelente manera de administrar las dependencias de proyectos de git.

Si estás buscando otro enfoque:

Compositor puede hacerlo todo por ti. Compositor es un administrador de dependencias para php. Su sintaxis es de json. Es bastante fácil y barato de usar.

Más información sobre el compositor:

  

Composer es una herramienta para la gestión de dependencias en PHP. Te permite   Declare las bibliotecas dependientes que su proyecto necesita y se instalará   ellos en tu proyecto para ti.

En la página de documentación , puede encontrar un ejemplo de cómo se construiría su archivo composer.json:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

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: %código% o crea un proyecto en particular desde packagist : composer.phar update

    
respondido por el chrisjlee 18.07.2012 - 19:10
1

Recientemente comencé a usar una herramienta llamada Pundle para administrar las Dependencias de mi Proyecto. Es compatible con una versión de PHP, Paquetes PEAR, Repositorios Git y Repositorios SVN como Dependencias y permite especificarlos fácilmente a través de un "Archivo de Pundle".

También debe configurar sus Dependencias para que los pagos de Git / SVN se coloquen en un directorio que no sea no en Control de versiones (por ejemplo, "proveedor") para que tenga un nuevo comienzo en cada pago y para mantén el repositorio de tu proyecto lean.

    
respondido por el chh 06.05.2011 - 11:17

Lea otras preguntas en las etiquetas