[pyar] subprocess y svn pre-commit

Andrés Gattinoni andresgattinoni en gmail.com
Vie Ago 19 15:54:07 ART 2011


Cómo están, listeros?

Hice un hook para el SVN que se ejecuta en pre-commit haciendo chequeo
de sintaxis de PHP, BASH y Javascript.
El script funciona perfecto cuando comiteo algunos archivos, pero para
probar hoy se me ocurrió re-commitear todo el proyecto y se complicó
un poco la cosa.

Obviamente el script debería demorar un rato porque son muchos
archivos, pero ya va más de una hora y no termina.
Revisando con un poco más de detalle veo que el script se queda en la
ejecución del comando "svnlook changed". El tema es que si ejecuto el
comando manualmente (para la misma transacción) se ejecuta en poco más
de un segundo. Pero cuando lo ejecuta mi script (para esta transacción
de muchos archivos) se queda ahí.

Este es el script:
http://pastebin.com/YF51nUZx

Lo que debería hacer es:
- Ejecutar svnlook changed para obtener la lista de archivos cambiados
en la transacción actual
- Generar una lista con los archivos php, sh y js modificados
- Crear un archivo temporal con los contenidos de cada archivo
modificado (usando svnlook cat)
- Por cada archivo, ejecutar el chequeo de sintaxis correspondiente y
borrar el temporal
- Mostrar los errores

Lo que más debería demorar es el paso 4, pero se queda en el primero y
el proceso de svnlook queda ahí en estado Sleep in aeternum.

na       25561  0.0  0.1   7672  4032 ?        S    16:50   0:00
python /home/subversion/jazz/hooks/pre-commit /home/subversion/jazz
418-cl
na       25562  0.0  0.2  18616  4384 ?        S    16:50   0:01
/usr/bin/svnlook changed -t 418-cl /home/subversion/jazz

Si lo ejecuto a mano va sin dramas:

# time /usr/bin/svnlook changed -t 418-cl /home/subversion/jazz |wc -l
3661

real	0m1.671s
user	0m1.564s
sys	0m0.116s

Por qué puede ser que se quede ahí?

Saludos,

A



More information about the pyar mailing list