La situacion en la que muchos nos encontramos es que ya no nos sirve FTP para hacer deploy. Por ejemplo de sitios web grandes en donde se usan una gran cantidad de archivos pertenecientes a los frameworks que se usan, librerias, codigo y archivos de todo tipo. Es una tarea tediosa revisar que archivos se modificaron, tener que subir todo el sitio cada vez que se hace un pequeño cambio porque no recordamos si cambiamos uno o mas archivos, etc.

Una solucion que estoy viendo cada vez mas es hacer deploy con GIT. La idea es mas o menos sencilla, montar un servidor git y configurarlo para que despliegue el codigo con cada push. Y por supuesto con la ventaja extra de tener un repositorio de codigo online. Esto trae varias ventajas, por ejemplo: que solo se suben los archivos que se agregaron o modificaron y eso demora muchisimo menos tiempo, ademas de ser mas comodo y quitar trabajo de encima al desarrollador.

El problema con eso es que montar el servidor GIT y configurarlo a gusto para que haga lo que se desea no es tan simple, al menos no siempre.

Encontre otra solucion, no tan linda pero sirve. Git-Ftp es un cliente de FTP pero que usa el beneficio de que Git ya sabe que archivos se modificaron, agregaron y eliminaron y realiza las operaciones correspondientes por si solo. Es una linda alternativa a los clientes de FTP tradicionales.

Como instalar Git-Ftp

Lo mas facil es hacerlo usando Git, con los siguientes comandos:

git clone https://github.com/resmo/git-ftp.git cd git-ftp git checkout master sudo make install

Los usuarios de Ubuntu pueden usar el PPA:

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

La herramienta tambien esta disponible para Windows y MacOS.

Como usar Git-Ftp

Lo basico seria tener un proyecto en donde ya se esta usando Git. Y si no se puede crear.

Recomendacion: deben tener al menos un commit para poder usar la herramienta.

Con la consola se posicionan sobre la carpeta con el proyecto y escriben el siguiente comando:

git ftp init -u -p - ftp://host.example.com/public_html

A continuacion ingresan la password para ese FTP. Con eso su proyecto y el host quedan vinculados. Esto solo se hace una vez. Las proximas veces, cuando quieran hacer un “push”(deploy) usaran el siguiente comando:

git ftp push -u -p - ftp://host.example.com/public_html

Igual al anterior pero con push en vez de init.

Por supuesto que es muy aburrido y lento estar escribiendo eso todas las veces. Se podria usar alias pero no creo que sea lo mas recomendable en cuestion seguridad. En vez de eso se pueden usar scopes para que sea mas facil mantener varios sitios donde se debe hacer deploy de diferentes proyectos Git. Para ello vean la pagina oficial.

Pagina oficial: https://github.com/resmo/git-ftp/