[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