En el anterior artículo, hablamos sobre cómo sincronizar dos repositorios en git, también se vio algo de hooks.

Hoy vamos a ver cómo usar filtros en git para cambiar automáticamente la url de una web hecha con jekyll en función de si estamos en local o en el servidor. Es decir, cuando estemos desarrollando o escribiendo un artículo, querremos ir viendo los resultados en local, para ello la url del fichero _config.yml debe estar vacía, cuando esté en el servidor deberá ser el nombre del dominio.



Creando el script para smudge

Bastará con crear un script que contenga:


ruby -e '$stdout.puts $stdin.read.gsub(/url: http:\/\/elbauldelprogramador\.com/, "url: ")'

Lo llamaremos siteurl.smudge, y le daremos permisos de ejecución.

Creando el script para clean

Similar al anterior:


ruby -e '$stdout.puts $stdin.read.gsub(/url: /, "url: http:\/\/elbauldelprogramador\.com")'

Añadir los scripts a los filtros

Solo resta añadir los filtros a la configuración de git:


$ git config filter.siteurl.smudge siteurl.smudge
$ git config filter.siteurl.clean siteurl.clean

Nota: Los scripts tienen que estar en el PATH del sistema, y tener permisos de ejecucion.

El Gitattributes

Gracias al comentario de Julián, me dí cuenta de que faltaba una última cosa por especificar. A qué ficheros se aplicarán los filtros. Para ello, añadimos lo siguiente al fichero .gitattributes:


_config.yml filter=siteurl

Gracias Julián.

Conclusión

Ejecutados todos los pasos, ahora tendremos la url en local cuando estemos desarrollando, y se sustituirá automáticamente por el dominio cuando se publique en github.

Referencias