Resulta que donde yo trabajo tenemos un setup bastante curioso. Tenemos un repositorio SVN central, un servidor de pruebas, un servidor de backups y nuestras computadoras. El problema es que nosotros desarrollamos en nuestras propias computadoras y copiamos los cambios al servidor de prueba a mano. Antes, cuando usábamos Dreamweaver esto era fácil porque DW tiene una opción para especificar servidor de pruebas y que queremos que copie todo cada vez que salvamos. Yo dejé de usar DW hace rato cuando me cambié a Ubuntu, con lo cual lo de copiar los archivos a mano me tiene harto.

El problema tiene tres soluciones:

  1. Bajarnos los repositorios al servidor de prueba directamente y desarrollar ahí vía SMB
  2. Montar servidores apache en cada una de nuestras computadoras y hacer las pruebas en localhost, y copiar solo cuando tengamos que mostrar a clientes o haya cambios grandes.
  3. Escribir un programa que monitorice cambios y los copie

La opcion 1 no va porque a mi me gusta tener todo bien separado. La opción 2 es viable, pero tener desarrolladores+1 servidores de prueba desperdigados por ahí es un quilombo. Y hace unos días leyendo sobre inotify me enteré que una librería para python llamada pyinotify. Así que como hace rato que quería probar python y me aburría, modificando uno de los ejemplos escribí un pequeño script que hace justamente lo que necesito.

inotify-updater.py

Por el momento solo vigila creaciones y modificaciones porque es todo lo que necesito, puede que en el futuro (algún otro fin de semana aburrido) implemente borrado y alguna que otra funcion. La idea es que uno especifica que directorios tiene que vigilar y a donde tiene que repetir los cambios. Las relaciones son de uno a uno, es decir, un directorio como fuente y otro como destino.

/home/hermann/folder1 /home/hermann/folder2
/home/hermann/folder3 /home/hermann/folder4

Esto copia todo lo que uno guarda y crea en folder1 y folder3, y lo repite en folder2 y folder4 respectivamente.

Estas instrucciones se guardan en un archivo, con una instruccion por linea y se ejecuta así:

$ ./inotify-updater.py ~/.inotify_instrucciones
start monitoring /home/hermzz/folder1 with mask 0x00000102
start monitoring /home/hermzz/folder3 with mask 0x00000102
touch /home/hermzz/folder2/prueba.txt
cp /home/hermzz/folder1/prueba.txt /home/hermzz/folder2/prueba.txt
mkdir /home/hermzz/folder2/carpeta
touch /home/hermzz/folder4/prueba.txt
cp /home/hermzz/folder3/prueba.txt /home/hermzz/folder4/prueba.txt
cp /home/hermzz/folder3/prueba.txt /home/hermzz/folder4/prueba.txt
stop monitoring...

La prueba que generó eso fue la siguiente:

~/folder1$ echo "texto" > prueba.txt
~/folder1$ mkdir carpeta
~/folder1$ cd ../folder3
~/folder3$ echo "texto" > prueba.txt
~/folder3$ echo "mas texto" >> prueba.txt

Dandole a ctrl+c termina el programa.

Si a alguien le resulta útil lo puede encontrar acá: inotify-updater.py.

 

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Set your Twitter account name in your settings to use the TwitterBar Section.