configuracion-de-git-en-laravel

Git es sin duda una herramienta indispensable para cualquier programador y mucho más cuando se trabaja de forma colaborativa, tanto así que desde hace un tiempo se considera como un requisito indispensable para optar a trabajos como desarrollador, mucho más en el ámbito web.

Si no sabes mucho de que se trata Git te recomiendo seguir nuestra serie sobre Git y GitHub donde podrás aprender a usar estas herramientas.

Hoy te voy a dar unos consejos para configurar correctamente Git en tus proyectos de Laravel. Si estas trabajando en forma colaborativa esto puede ayudarte mucho a disminuir los posibles problemas que puedan presentarse.

Vamos a hacer uso de los archivos .gitignore de git, si no sabes de que se trata te invito a leer este post sobre Exclusión de ficheros en git 

El directorio vendor

Recuerda que la mayoría de los paquetes que usamos en nuestro proyecto de Laravel se instalan en este directorio, así como todos los paquetes que Laravel necesita para funcionar. Cuando ejecutamos composer install en el directorio vendor se instalan todos los paquetes que se han indicado como requeridos en el archivo composer.json, y cuando ejecutamos composer update, todos estos se actualizan (ver Composer install vs composer update) todo esto dentro del directorio vendor.

Cuando trabajamos de forma colaborativa es una buena práctica dejar este directorio fuera de la vista de git, agregándolo al archivo .gitignore. Esto puede reducir en gran parte la carga y descarga de archivos a git.

Cuando se lleva el proyecto a producción, debería evitarse al máximo el uso de «composer update» ya que algunas actualizaciones que no se han probado pueden hacer fallar tu sistema.

Entonces cada vez que agregues un nuevo paquete al archivo composer.json cada colaborador de dicho proyecto tan solo debe ejecutar composer install de forma local.

Vagrantfile y el directorio etc

Tal vez esto le haya ocurrido a muchos de ustedes. Cuando usamos vagrant en nuestros proyectos debemos crear un archivo llamado vagrantfile el cual se encarga de ejecutar una serie de scripts (por lo general definidos en el directorio /etc) para poner en marcha la máquina virtual que funcionará como ambiente de desarrollo. Luego de ejecutar vagrant up y crear la máquina virtual se crea un nuevo directorio .vagrant, es de suma importancia excluir este fichero en el archivo .gitignore. . Lo que ocurre es que en este ultimo directorio se guardan configuraciones específicas para cada maquina en la cual se ejecute Vagrant, por lo cual si compartes esto en un repositorio, un colaborador puede descargar el proyecto, crear la máquina virtual y subir sus cambios, al momento que tu actualices tu versión local del proyecto tu máquina virtual dejará de funcionar y al ejecutar vagrant up básicamente estarás descargando e instalando desde cero tu máquina virtual.

Gulp

Si usas Laravel Elixir y Gulp para manejar las hojas de estilo y los archivos javascript en tu aplicación, incluye también el directorio node_modules en el archivo .gitignore, básicamente se trata del mismo principio del que hablaba anteriormente con el directorio vendor, así no necesitarás descargar y subir esta información al repositorio, bastará con clonar el proyecto y ejecutar npm install para obtener todos estos paquetes de forma local.

Te recomiendo leer este post sobre Manejo de assets con elixir y gulp en Laravel 5.1

Carpetas del IDE o tu sistema operativo

Depeendiendo del IDE y del sistema operativo que uses, es posible que debas agregar directorios y archivos adicionales al .gitignore.

Por ejemplo, PHP Storm crea un directorio llamado «.idea/», OS X crea archivos .DS_Store, asegúrate de agregarlos a tu archivo .gitignore y no subirlos al repositorio.

Información de entorno

Asegúrate de NO subir el archivo .env ni ningún dato de los entornos de desarrollo y sobretodo de producción al repositorio. Laravel incluye un archivo .env.example que puedes usar para indicarle a cada desarrollador, que datos debe configurar en su entorno local y/o de pruebas, y un archivo .env ignorado por defecto donde vas a incluir los datos reales para cada entorno.

Resultado

Finalmente, dependiendo de las características de tu proyecto y ambiente de trabajo, obtendrás como resultado en tu archivo .gitignore algo similar a esto:

/vendor
/etc
.vagrant
.env
/node_modules
.idea/
.DS_Store

De esta forma vas a evitar muchos problemas en desarrollar tus proyectos de Laravel de forma colaborativa en un ambiente más profesional.

Lecturas recomendadas

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Cómo crear y usar los Middleware en Laravel 5.1 Lección siguiente Cómo funcionan las pruebas de integración en Laravel 5.1