GIT puede ayudarte a llevar el control de versiones de tu página web y mejorar el proceso de desarrollo en general.

¿Qué es GIT?

“Git es un software de control de versiones, pensado en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.”

Como lo describe wikipedia, Git es una herramienta para el control de versiones, es ligera pero poderosa y está disponible para Windows, Linux, Mac OS, y Solaris.

Ventajas de utilizar un control de versiones

Se utiliza para llevar un control de los cambios en los proyectos, quienes los realizaron, cuando sucedieron y fácilmente volver algunos cambios atrás cuando sea necesario. Crear ramas es muy sencillo, lo que permite desarrollar funcionalidades en paralelo, al mismo tiempo que se puede trabajar de forma colaborativa con otros desarrolladores.

Este artículo no pretende cubrir contenidos introductorios de cómo utilizar Git, si quieren aprender sobre Git puede seguir alguno de los siguientes links con recursos:

  1. Pro Git https://git-scm.com/book/es/v1 Libro escrito por Scott Chacon y Ben Straub
  2. TryGit https://try.github.io/levels/1/challenges/1 escrito por GitHub & Code School

GIT para desarrollo de sitios en WordPress

¿Qué incluir en el repositorio?

El ejemplo muestra las instrucciones para incluir no sólo el theme, sino también el core de WordPress y los plugins. Los componentes pueden adaptarse para excluir estas carpetas.

Archivo .gitignore

# Mantener estos archivos fuera del repositorio
/wp-content/themes/twenty*
/wp-content/upgrade
/wp-content/uploads
/sitemap.*
/wp-config.php
*.sql

# Archivos ocultos
*.DS_Store
*Thumbs.db
*.sass-cache*
*~imageoptim*

Hay que tomar en cuenta que un sistema de control de versiones no cumple con la función de copia de seguridad, y es por ello que varias carpetas y archivos son ignorados. La configuración va a variar dependiendo del ambiente de desarrollo, pero como regla general todo el contenido generado por un usuario debería quedar fuera del repositorio

La carpeta uploads se ignora ya que cualquier archivo subido por algún usuario haría que nuestro repositorio pase a estar desactualizado. Tambien hace que sea más pesado, sin obtener muchos beneficios del contenido de la carpeta.

Una mejor forma de configurar la carpeta wp-content/uploads en nuestro ambiente de desarrollo es hacerlo con un archivo .htaccess con el codigo siguiente:

<IfModule mod_rewrite.c>
 RewriteEngine on

 # Intenta cargar los archivos del ambiente de
 # produción si no los encuentra en el ambiente local
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule wp-content/uploads/(.*) \
   http://{PROD}/wp-content/uploads/$1 [NC,L]
</IfModule>

Lo que el código anterior hace es buscar y cargar los archivos de la carpeta wp-content/uploads en el ambiente local, en caso de no existir, intenta cargar el archivo del ambiente de producción. Esto también nos evitar estar descargado/subiendo imágenes por medio de ftp entre nuestros ambientes de desarrollo/staging/producción.

Archivo wp-config.php

a. Crear un nuevo archivo wp-config.php

$ git clone {REPO} {DIRECTORY}
$ cd {DIRECTORY}
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php

b. Definir los valores en wp-config.php para eliminar la necesidad de editar estos valores en la tabla wp_options de la base de datos.

// NO trailing slash!
define( 'WP_SITEURL', 'http://example.com' );
define( 'WP_HOME', WP_SITEURL );

c. Deshabilitar el instalador y editor de plugins y themes; esto previene a no-desarrolladores instalar/actualizar pluguins o themes.

// Disable the theme and plugin installers and editors...
define( 'DISALLOW_FILE_MODS', true );

// ...or just disable the theme/plugin editor
define( 'DISALLOW_FILE_EDIT', true );

d. Las actualizaciones automáticas de WordPress no se ejecutan cuando se detecta la presencia de un sistema de control de versiones, lo cual es bastante útil. Activarlas tampoco es algo malo.

Otros items en wp-config.php

  • Credenciales de base de datos
  • Claves  + salts
  • Modo debug(cuando sea aplicable)

Pasos finales

  • Clonar el repositorio
  • Importar base de datos
  • Llenar el archivo wp-config
  • Configurar servidor virtual (si fuera necesario)

Comandos para que te pueden ser útiles:

Implantar nuevas actualizaciones.

$ git pull

Agregar a lor archivos a implantarse, para saber que archivos han cambiado en el servidor:

$ git ls-files -dmo --exclude-standard

El resultado estará vacío si no han habido cambios.