如何在 Apache conf 中使用 SVN 修订号来 SetEnv?

如何在 Apache conf 中使用 SVN 修订号来 SetEnv?

我正在设置 Apache 的开发环境。我更喜欢将环境变量设置为本地签出的 SVN 修订号。然后环境变量值被读取到 PHP 代码中并放入外部 JavaScript 和 CSS URL(作为缓存清除器)。因此,每次我“svn up”我的本地代码时,我都会获得与修订号相关的更新的 JavaScript 和 CSS URL。

例如,当前修订号为 2314,设置为 $_SERVER['REVISION']。PHP 页面将读取此 $_SERVER['REVISION'] 并呈现外部 JS 链接,如下所示http://www.example.com/2314/home.js。由于 URL 中包含修订号,因此如果更新本地修订,浏览器缓存将被破坏,以方便开发。

在 Apache 中可以实现这一点吗?

谢谢,

-摩根

答案1

从您的回答来看,这听起来像是一个客户端问题。Subversion 不支持客户端钩子(据我所知),因此我建议编写一个类似于下面的小脚本来执行更新并更新文件中的修订号。

#!/bin/bash
svn update
svn info | grep ^Revision | awk '{print $2}' > svn-revision

然后您可以在您的 php 代码中读取修订号,如下所示:

$SVN_REVISION = file_get_contents('/path/to/svn-revision');

我建议从文件中读取修订号,而不是从环境变量中读取。没有简单的方法可以确保您当前的环境与 Apache 正在运行的环境相同。此外,这还可以确保 php 代码中的修订号在重新启动等情况下仍然存在。

您应该将 Subversion 设置为忽略 svn-revision 文件,这样您就不会签入它。

svn propset svn:ignore svn-revision .

相关内容