Ejecute el script bash cuando los files remotos SVN hayan cambiado

Intento crear un script Bask en el server Ubuntu que debería verificar si los files fueron cambiados en un repository SVN remoto. Si es así, debería realizar algunas tareas. En mi caso ejecute doxygen y regenere la documentation.

Tengo problemas para interpretar la respuesta de estado svn. Estuve buscando toda la semana y probé varias sugerencias encontradas, pero todavía no funciona. Para ser precisos, las tareas se ejecutan siempre sin importar si se trata de files modificados.

Aquí está mi script hasta ahora:

#!/bin/bash # Get the status: svnstatus=$(svn status -u -q) #Check for modified or new files: #This part is not working correctly added=$(printf "%s" "$svnstatus" | sed -n 's/[Added] *\(.*\)/\1/p') modified=$(printf "%s" "$svnstatus" | sed -n 's/[Updated] *\(.*\)/\1/p') if [ "x$added" != "x" -o "x$modified" != "x" ] then svn update echo regenerated documentation using doxygen fi 

El problema principal es con la parte sed. Soy nuevo en Ubuntu y esa parte es difícil para mí. Copié eso de un script que encontré en Internet.

$ svnstatus es

 Status against revision: 75016 

cuando nada nuevo y

  * 75016 Resources/graphs/dot_tags.txt Status against revision: 75017 

cuando se cambia un file

Cualquier consejo es muy apreciado

Ese command sed no coincide con el svn status -u -q salida svn status -u -q por lo que no hará nada útil.

En su lugar, puede usar grep para verificar si hay líneas en la salida con un carácter * en la novena columna, que indica un file modificado.

Esto debería funcionar:

 #!/bin/bash # Get the status: svnstatus=$(svn status -u -q) # Check for modified or new files: if echo "$svnstatus" | grep -q '^........\*' then svn update echo regenerated documentation using doxygen fi