¿Puedes forzar un reinicio de apache en un enlace svn post-commit?

Tengo la siguiente installation y ejecución de anzuelos post-commit:

#!/bin/bash /usr/bin/svn update /var/www/html/dev > /var/www/svnrepo/hooks/post-commit-log 

Estoy desarrollando en Python / Django y cada vez que hago algún cambio en cualquier file ".py", tengo que SSH en y "sudo / sbin / service httpd restart" … ¿Hay alguna manera de agregar esto a la parte inferior del file post-commit?

Algunos obstáculos que veo y / o pienso:

  • Estoy sirviendo mi repository SVN de apache (p. Ej., Http://www.iq-development.com/blog/creating_a_subversion_development_environment ), por lo que reiniciarlo antes de que la "confirmación" se envíe de vuelta después de la confirmación puede causar algunos problemas …
  • Creo que el gancho post-commit se ejecuta en "apache" para el usuario … ¿Este usuario tiene permissions para reiniciar httpd / sbin / service?

-Fedora Core 8

¡Gracias! -Tom

Si el process Apache está escuchando en un puerto de less de 1024, entonces tendrá que ser root para detenerse y comenzar a sí mismo. Si está escuchando un puerto por encima de 1024, puede iniciarlo como usuario no root y luego usar el enganche post-commit para reiniciarlo.

También querrá usar /etc/init.d/httpd graceful en lugar de reiniciar para no matar las conexiones que están trabajando, si grace está disponible su versión de Apache.

Finalmente, el enganche posterior a la confirmación podría iniciar otro subprocess en el background que duerme unos segundos antes de reiniciarlo para permitir que el cliente finalice por completo. Debes asegurarte de que el script de gancho se separe por completo de stderr. Por ejemplo, esto funciona como un enganche post-commit con Subversion 1.6.1, el cliente se desconectará del server y la suspensión aún se ejecutará.

 #!/bin/sh /bin/sleep 60 2>/dev/null & 

Si puede esperar un minuto para que el sitio se actualice, puede poner un cron run ejecutando un script que ejecuta "svn update" y si hubo una actualización, rebota en el server.