Cómo configurar bien el archivo .gitignore para las aplicaciones Symfony2

Git es la herramienta recomendada para gestionar el código fuente de las aplicaciones Symfony2. Por eso resulta esencial configurar bien el archivo .gitignore, que define los archivos y directorios que no se suben al repositorio.

Si por error has subido al repositorio algún archivo o directorio que no debería estar, puedes eliminarlo con el siguiente comando, que mantiene la copia local en tu ordenador de ese archivo o directorio:

git rm --cached nombre-del-archivo-o-directorio

Configuración recomendada

Copia y pega la siguiente configuración en el archivo .gitignore de tu proyecto:

# -- Symfony2 -----------------------------------------
app/bootstrap.php.cache
app/bootstrap_cache.php.cache
app/config/parameters.ini
app/config/parameters.yml
app/cache/*
app/logs/*
vendor/*
web/bundles/*
web/css/*
web/js/*
web/uploads/*
 
# -- Composer -----------------------------------------
composer.phar
 
# -- PHPUnit ------------------------------------------
app/phpunit.xml  
 
# -- Editores -----------------------------------------
# vim
.*.sw[a-z]
*.un~
Session.vim
.netrwhist
 
# eclipse
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
.externalToolBuilders/
*.launch
.buildpath
 
# phpstorm
.idea/
 
# textmate
*.tmproj
*.tmproject
tmtags
 
# sublimetext
/*.sublime-project
*.sublime-workspace
 
# netbeans
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
 
# -- Sistemas Operativos ------------------------------
# Windows
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
 
# Linux
.*
!.gitignore
!.htaccess
*~
 
# Mac OS X
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.Spotlight-V100
.Trashes

Explicación

Symfony2

app/bootstrap.php.cache
app/bootstrap_cache.php.cache  # sólo en Symfony 2.0

Archivos que genera Symfony2 para mejorar el rendimiento. Contienen todo el código de las clases que más se ejecutan en las aplicaciones Symfony2.

app/config/parameters.ini      # Symfony 2.0
app/config/parameters.yml      # Symfony 2.1

Archivos de configuración principales de Symfony2. Estos archivos pueden contener contraseñas y otros datos sensibles, por lo que nunca se suben al repositorio. En su lugar, crea un archivo llamado app/config/parameters.ini.dist (en Symfony 2.0) o app/config/parameters.yml.dist (en Symfony 2.1) que explique cómo debe crearlo cada usuario que utilice la aplicación.

app/cache/*

Directorio donde se generan todos los archivos temporales que mejoran el rendimiento de la aplicación. Entre otros, contiene todas las plantillas Twig compiladas a PHP, toda la información procesada de las anotaciones del código, todas las rutas compiladas a PHP, información del profiler, etc.

app/logs/*

Directorio donde se generan los archivos de log en los que Symfony2 escribe todos sus mensajes de depuración. Normalmente sólo hay un archivo de log por cada entorno de ejecución. Si no lo borras de vez en cuando, el archivo app/logs/dev.log puede llegar a ser gigantesco.

vendor/*

Directorio con todos los componentes y librerías de Symfony2. Estas dependencias nunca se suben al repositorio. Cada usuario que se baje esta aplicación, debe instalar los vendors con el comando php bin/vendors install.

web/bundles/*
web/css/*
web/js/*

Directorios donde Symfony2 vuelca todos los archivos web públicos (CSS y JavaScript) Los archivos CSS y JavaScript se regeneran en el servidor de producción con los commandos assets:install o assetic:dump.

web/uploads/*

Directorio donde se guardan los archivos subidos por los usuarios (imágenes, documentos, etc.).

Composer

composer.phar

Si eres de los que instalan Composer para cada aplicación Symfony2, este es el archivo creado por Composer en el directorio raíz del proyecto. Seguramente en el servidor de producción tendrás instalado Composer de forma global, tal y como se explica en la guía de instalación de Git por lo que es una buena idea excluir este archivo.

PHPUnit

app/phpunit.xml

Symfony2 incluye un archivo de configuración genérico para PHPUnit llamado app/phpunit.xml.dist. Normalmente cada programador crea una copia llamada app/phpunit.xml donde modifica las opciones de configuración para adaptarlas a sus necesidades particulares. Lo normal es no subir este archivo de configuración propio para que no afecte a la ejecución de los tests del resto de programadores del equipo de desarrollo.

Editores

Esta sección muestra los archivos más habituales creados los IDE y editores más populares para crear aplicaciones Symfony2 (vim, Eclipse, PHPStorm, TextMate, SublimeText y NetBeans).

Si utilizas un editor diferente, busca su configuración recomendada en los ejemplos del proyecto gitignore.

Sistemas Operativos

Esta sección excluye los diferentes archivos temporales creados por los tres sistemas operativos más populares. Recuerda que es posible que tu aplicación se ejecute en diferentes sistemas operativos, así que no te quedes sólo con la configuración del sistema operativo que utilices en local.

Configuración global

La última parte del archivo .gitignore mostrado anteriormente incluye los archivos generados por los sistemas operativos, los IDE y los editores. Este tipo de archivos no sólo se generan en los proyectos Symfony2, sino en cualquier otro proyecto de software.

Por ese motivo, puede resultar interesante crear un archivo .gitignore global, que se aplique a todos los proyectos de tu ordenador. Para ello, crea un archivo llamado .gitignore_global en el directorio raíz de tu usuario:

$ touch ~/.gitignore_global

Después, añade en su interior la configuración referida a los editores y a los sistemas operativos:

# -- Editores -----------------------------------------
# vim
.*.sw[a-z]
*.un~
Session.vim
.netrwhist
 
# eclipse
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
.externalToolBuilders/
*.launch
.buildpath
 
# phpstorm
.idea/
 
# textmate
*.tmproj
*.tmproject
tmtags
 
# sublimetext
/*.sublime-project
*.sublime-workspace
 
# netbeans
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
 
# -- Sistemas Operativos ------------------------------
# Windows
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
 
# Linux
.*
!.gitignore
!.htaccess
*~
 
# Mac OS X
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.Spotlight-V100
.Trashes

Por último, ejecuta el siguiente comando para modificar la configuración de Git e indicarle que debe tener en cuenta el nuevo archivo .gitignore_global:

$ git config --global core.excludesfile ~/.gitignore_global

Otros recursos

El proyecto gitignore de GitHub contiene muchos ejemplos de archivos .gitignore para diferentes tecnologías y lenguajes de programación.

Compartir en

¿Has visto algún error?

Avísanos en [email protected] para que podamos corregirlo. Gracias.

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.