0

我有以下提交后挂钩设置和运行:

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

我正在使用 Python/Django 进行开发,每当我对任何“.py”文件进行任何更改时,我都必须通过 SSH 和“sudo /sbin/service httpd restart”...有没有办法将它添加到底部提交后的文件?

我预见和/或认为的一些障碍:

-Fedora 核心 8

谢谢!-汤姆

4

1 回答 1

2

如果 Apache 进程正在侦听小于 1024 的端口,那么它需要是 root 才能自行停止和启动。如果您正在侦听 1024 以上的端口,那么您可以以非 root 用户身份启动它,然后使用 post-commit 挂钩重新启动它。

如果优雅的 Apache 版本可用,您还希望使用 /etc/init.d/httpd graceful 而不是重新启动来不终止正在工作的连接。

最后,提交后挂钩可以在后台启动另一个子进程,该子进程会在重新启动之前休眠几秒钟以让客户端完全完成。您必须确保钩子脚本完全脱离标准错误。例如,这作为 Subversion 1.6.1 的提交后挂钩,客户端将与服务器分离,并且睡眠仍将运行。

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

如果您可以等待一分钟让站点更新,您可以放入一个由 root 运行的 cron 一个运行“svn update”的脚本,如果有更新,则退回服务器。

于 2009-04-23T00:32:57.243 回答