Cómo crear y guardar un proyecto Symfony2 en git

Truco

<r0> A pesar de que este artículo específicamente es acerca de git, los mismos principios genéricos se aplican si estás guardando el proyecto en Subversión.

Una vez hayas leído Creando páginas en Symfony2 y te sientas cómodo usando Symfony, sin duda estarás listo para comenzar tu propio proyecto. En este artículo, aprenderás la mejor manera de empezar un nuevo proyecto Symfony2 y almacenarlo usando el sistema de control de versiones git.

Configuración inicial del proyecto

Para empezar, tendrás que descargar Symfony e iniciar tu repositorio git local:

  1. Descarga la edición estándar de Symfony2 sin vendors.

  2. Descomprime la distribución. Esto creará un directorio llamado Symfony con tu nueva estructura del proyecto, archivos de configuración, etc. Cambia el nombre Symfony a lo que quieras.

  3. Crea un nuevo archivo llamado .gitignore en la raíz de tu nuevo proyecto (por ejemplo, junto al archivo composer.json) y pega lo siguiente ahí. Los archivos que coincidan con estos patrones serán ignorados por git:

    /web/bundles/
    /app/bootstrap*
    /app/cache/*
    /app/logs/*
    /vendor/
    /app/config/parameters.yml
    

Truco

Posiblemente también quieras crear un .gitignore que puedas utilizar en todo el sistema, en cuyo caso, puedes encontrar más información aquí: Github .gitignore De esta manera puedes excluir archivos y directorios usados frecuentemente por tu IDE en todos tus proyectos.

  1. Copia app/config/parameters.yml a app/config/parameters.yml.dist. El archivo parameters.yml es ignorado por git (ve más arriba) para no comprometer la configuración específica de la máquina —como la contraseña de la base de datos—. Al crear el archivo parameters.yml.dist, los nuevos desarrolladores rápidamente pueden clonar el proyecto, copiar este archivo a parameters.yml, personalizarlo y empezar a desarrollar.

  2. Inicia el repositorio git:

    $ git init
    
  3. Agrega todos los archivos iniciales a git:

    $ git add .
    
  4. Crea una confirmación de cambios inicial en tu proyecto recién iniciado:

    $ git commit -m "Initial commit"
    
  5. Por último, descarga todas las bibliotecas de otros proveedores ejecutando el composer. Para obtener más información, consulta Actualizando vendors.

En este punto, tienes un proyecto Symfony2 totalmente operativo confirmado correctamente en git. Puedes comenzar a desarrollarlo inmediatamente, confirmando los nuevos cambios al repositorio git.

Puedes continuar, siguiendo el capítulo Creando páginas en Symfony2 para aprender más acerca de cómo configurar y desarrollar tu aplicación.

Truco

La edición estándar de Symfony2 viene con alguna funcionalidad de ejemplo. Para eliminar el código de ejemplo, sigue las instrucciones del artículo «Cómo eliminar el AcmeDemoBundle».

Gestionando bibliotecas de terceros con composer.json

¿Cómo funciona?

Cada proyecto Symfony utiliza una gran cantidad de bibliotecas "vendor" de terceros. De una u otra manera el objetivo es descargar estos archivos en tu directorio vendor/ y, de ser posible, darle una forma sensata para manejar la versión exacta que necesita cada uno.

De manera predeterminada, estas bibliotecas se descargan ejecutando el «descargador» binario, php composer.phar install. Este archivo composer.phar es parte de una biblioteca llamada Composer y puedes leer más acerca de su instalación en el capítulo Instalación.

El archivo composer.phar lee el archivo composer.json en la raíz de tu proyecto. Se trata de un archivo en formato JSON, que contiene una lista de cada uno de los paquetes externos que necesita, la versión a descargar y mucho más. El archivo composer.phar también lee el archivo composer.lock, el cual te permite fijar cada biblioteca a una versión exacta. De hecho, si existe un archivo composer.lock, las versiones que contiene tienen prioridad en composer.json. Para actualizar tus bibliotecas a nuevas versiones, ejecuta php composer.phar update.

Truco

Si quieres añadir un nuevo paquete a tu aplicación, modifica el archivo composer.json:

{
    "require": {
        ...
        "doctrine/doctrine-fixtures-bundle": "@dev"
    }
}

y luego ejecuta la orden update para este paquete específico, es decir:

$ php composer.phar update doctrine/doctrine-fixtures-bundle

También puedes combinar ambos pasos en una sola orden:

$ php composer.phar require doctrine/doctrine-fixtures-bundle:@dev

Para obtener más información sobre Composer, consulta GetComposer.org:

Es importante tener en cuenta que estas bibliotecas de proveedores en realidad no son parte de tu repositorio. En cambio, simplemente son archivos sin seguimiento que se descargan en el directorio vendor/. Pero, como toda la información necesaria para descargar estos archivos se guarda en composer.json y composer.lock (los cuales se almacenan en el repositorio), cualquier otro desarrollador puede utilizar el proyecto, ejecutar php composer.phar install, y descargar exactamente el mismo sistema de bibliotecas de proveedores. Esto significa que estás controlando exactamente cada biblioteca de proveedores, sin tener que confirmar los cambios a tu repositorio realmente.

Por lo tanto, cada vez que un desarrollador utilice tu proyecto, tendrá que ejecutar el guión php composer.phar install para asegurarse de descargar todas las bibliotecas de proveedores necesarias.

Vendors y submódulos

En lugar de utilizar el sistema composer.json para gestionar tus bibliotecas de proveedores, puedes optar por utilizar submódulos git nativos. No hay nada malo con este enfoque, aunque el sistema composer.json es la forma oficial de solucionar este problema y, probablemente, sea mucho más fácil. A diferencia de los submódulos git, Composer es lo suficientemente inteligente como para calcular qué bibliotecas dependen de cuáles otras bibliotecas.

Almacenando tu proyecto en un servidor remoto

Ahora tienes un proyecto Symfony2 completamente operativo almacenado en git. Sin embargo, en la mayoría de los casos, también desearás guardar tu proyecto en un servidor remoto, tanto con fines de seguridad, como para que otros desarrolladores puedan colaborar en el proyecto.

La manera más fácil de almacenar tu proyecto en un servidor remoto es a través de GitHub. Los repositorios públicos son gratuitos, sin embargo tendrás que pagar una cuota mensual para tener repositorios privados.

Alternativamente, puedes almacenar tu repositorio git en cualquier servidor creando un repositorio minimalista y luego enviando tus cambios al mismo. Una biblioteca que te ayuda a gestionar esto es Gitolite.

Bifúrcame en GitHub