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.

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