git-ftp o control de versiones de tu web

¿Quieres tener una copia de seguridad de tu sitio web? ¿Quieres llevar un control de versiones de tu web? La solución para hacer ambas cosas de una forma sencilla es mediante git-ftp.

Hace ya muchos años que gestiono mi página web. Inicialmente todo lo hacía mediante un cliente FTP. En concreto siempre he venido utilizando Filezilla. Sin embargo, desde hace ya algún tiempo, esta página web, al igual que otras que desarrollo y mantengo, las gestiono mediante un sistema de control de versiones. En concreto, y como no podía ser de otra manera, utilizo Git.

Me gustaría poder utilizar git directamente en mi proveedor de hospedaje. Sin embargo, el plan que tengo contratado con mi proveedor, no contempla el acceso vía ssh, una lástima.

La solución para unir todas estas piezas del puzzle es precisamente git-ftp que nos permite trabajar con git y FTP.

Control de versiones de tu web con git-ftp

Control de versiones de tu web

Sobre el descubrimiento de git-ftp

Lo cierto es que no conocía esta maravilla. Fue en el podcast de Eduardo Collado, donde tuve conocimiento de esta fabulosa herramienta. Esto simplifica considerablemente la gestión y relación con tu sitio web.

Pero, ¿que es Git-FTP?

Si utilizas un sistema de control de versiones como Git y necesitas subir archivos a un servidor FTP, git-ftp es la herramienta que necesitas. Git-Ftp te permitirá ahorrar tiempo y consumo de recursos, puesto que solo subirá aquellos archivos que han cambiado desde la última vez subiste archivos a tu alojamiento.

Git-ftp, mantiene un seguimiento de los archivos subidos. Para ello guarda el número de identificación del último commit en un archivo de registro en el servidor. Git-ftp utiliza git para determinar que archivos locales han cambiado, y se encarga de subir únicamente esos nuevos archivos.

Para hacer este seguimimiento, se guarda el estado subiendo el hash SHA1. La ventaja es que no necesitas que Git esté instalado en el servidor remoto.

Incluso en el caso de que estás trabajando con diferentes ramas, git-ftp reconoce los archivos que son diferentes y solo trabaja con esos.

Instalación

Si utilizas Ubuntu o derivados, estás de enhorabuena, porque solo tienes que hacer clic en el git-ftp, o bien desde un terminal, ejecuta la siguiente orden,

sudo apt install git-ftp

git-ftp es una herramienta que está en costante evolución, y la que está actualmente en los repositorios oficiales de Ubuntu no es la última. Ahora, si quieres instalar la última versión, solo tienes que añadir el repositorio oficial de la aplicación. Para ello, solo tienes que hacer clic en instalar git-ftp de repositorio. O bien desde un terminal, para Ubuntu 18.04, ejecuta las siguientes órdenes,

sudo add-apt-repository ppa:git-ftp/ppa
sudo apt install git-ftp

Y para versiones anteriores, ejecuta,

sudo add-apt-repository ppa:git-ftp/ppa
sudo apt update
sudo apt install git-ftp

Si, efectivamente, a partir de Ubuntu 18.04 no es necesario actualizar tras añadir un nuevo repositorio.

Como suelo decir, por ahí hay gente que piensa. Y es que siempre que añadimos un repositorio es necesario actualizar ¿para que tenemos que ejecutar dos órdenes diferentes si en una sola lo tenemos resuelto?.

En el caso de que no utilices Ubuntu o derivada, te recomiendo que visites la página de instalación de git-fpt.

Primeros pasos

Una vez tenemos instalado git-ftp, el siguiente paso es configurar nuestro repositorio para poder trabajar con esta herramienta.

Suponiendo que tus archivos en la página web se encuentran en el directorio `public_html, las órdenes para configurar son las siguientes,

git config git-ftp.url "ftp://ftp.ejemplo.es:21/public_html"
git config git-ftp.user "usuario"
git config git-ftp.password "contraseña"

Evidentemente tenemos que reemplazar la dirección ftp, el usuario y la contraseña, por las que correspondan a nuestro servidor FTP.

El siguiente paso depende de si en el servidor ya tienes todos los archivos o no. En el caso de que no los tengas, tienes que ejecutar la siguiente orden,

git ftp init

En el caso de que en tu servidor ftp, ya estén todos los archivos, en lugar de ejecutar la orden anterior, tienes que ejecutar la siguiente,

git ftp catchup

A partir de aquí, tienes que trabajar como siempre lo haces con tu sistema de control de versiones favorito Git. Es decir, por ejemplo, crea un nuevo archivo, lo añades, confirmas y lo subes…, pero en lugar de subirlo a tu servicio remoto de git lo subes a tu servidor FTP. En pocas palabras,

echo "probando, probando..." >> prueba.txt
git add .
git commit -m "una prueba"
git ftp push

Lo importante evidentemente está en la última línea git ftp push. Aquí es donde indicas que lo suba a tu servidor FTP. Y aquí es donde se hace la magia, pues solo subirá aquellos cambios que se hayan registrado después del último commit.

Mas opciones

Ya hemos visto algunas de las acciones que podemos hacer con git-ftp. Sin embargo, vamos a repasarlas todas, para que veas el potencial de esta herramienta, y tengas una idea global de como llevar el control de versiones de tu web con esta herramienta,

  • init, sube todos todos los archivos a los que git hace seguimiento. Crea el archivo .git-ftp.log que contiene el hash SHA1 del último commit, como he mencionado anteriormente.
  • catchup, crea o actualiza el archivo .git-ftp.log en el servidor remito. De esta forma se asume que ya has subido todos los archivos. Es decir, de esta manera, asumimos que ambos están sincronizados.
  • push, sube los archivos que han cambiado y borra los archivos que han sido borrados desde la última actualización.
  • download, esta acción es experimental así que anda con ojo. Te permite descargar todos los cambios del servidor remoto en el árbol de trabajo. Esta acción necesita de una herramienta adicional lftp. Ya comenté sobre esta herramienta en el artículo “sincronizando directorios vía FTP desde el terminal”. Ten cuidado porque puede borrar archivos locales que no hayan sido registro y listados en .git-ftp-ignore.
  • pull, otra acción experimental. Esta acción permite descargar cambios del servidor remoto en un commit y realizar un merge en la rama actual. También necesita que lftp esté instalada.
  • help, muestra la ayuda.

Existen otras acciones adicionales a las mencionadas, que puedes consultar en la propia página de git-ftp.

Otras opciones

Además de las acciones indicadas anteriormente, git-ftp dispone de una serie de opciones, algunas de las cuales son,

  • -u [usuario], para indicar el nombre de usuario
  • -p [contraseña], nos permite especificar la contraseña
  • -a, sube todos los archivos del actual checkout.
  • -b [rama], sube a una determinada rama.

Existen muchas otras opciones, pero te recomiendo que las consultes en la página de git-ftp

Ignorando algunos archivos

Cuando lleves el control de versiones de tu web, es muy frecuente que queramos evitar que algunos archivos no se suban a nuestro servidor FTP. En este caso lo que tenemos que hacer es añadirlos al archivo .git-ftp-ignone. Así, por ejemplo, si queremos que se ignore todo lo que hay en el directorio config, añadiremos al archivo en cuestión config/*. O si no queremos que se añada ningún archivo con extensión .txt, añadiremos al archivo *.txt.

Conclusión

Un sistema de control de versiones es una pieza fundamental para gestionar los cambios en una página web. Esto te permite llevar una rama de desarrollo y una rama de producción.

Git-ftp, es la pieza que nos faltaba a aquellos que por circustancias no tenemos ssh o git en nuestro proveedor de hosting. Con esta herramienta podemos llevar el control de versiones de tu web.


Más información,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *