0

我只是想知道这是否可能,如果可以的话,有人可以引导我走向正确的方向吗?

基本上这就是我当前的 Linux 机器正在做的事情:

<VirtualHost *:443>
    ServerName co.svnr.net
    ServerAdmin admin@svnr.net
    ServerAlias co

    <Location /shauny/test>
        DAV svn
        SVNPath /home/svn/public/shauny/test
        AuthName "Test repository"
    </Location>

    #a million other Locations later....

    SSLEngine on
    SSLCertificateFile /home/certs/svnr/server.crt
    SSLCertificateKeyFile /home/certs/svnr/server.key
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown 
</VirtualHost>

这很棒而且很有效,但是对于 50 多个 svn 存储库来说,这是不可行的。理想的解决方案是指向 PHP5 中的 Handler(虽然托管在 Linux 机器上),它接受超全局 $_GET 中的用户名/存储库,然后将它们重定向到存储库(如果存在,否则重定向到 404)。

但是……这可能吗?
PHP5 可以读取 Subversion 存储库和身份验证吗?

在我看来,让 PHP5 处理它们会更可行,因为我可以根据使用情况等生成一些日志......

非常感谢各位,如果有什么不清楚的请告诉我。

4

2 回答 2

1

我们在我们的开发盒上进行了这种设置(诚然只有 3 个 repos),我们只是将 Location 指令设置为指向 subversion 根并使用 SVNParentPath:

<Location /shauny>
        DAV svn
        SVNParentPath /home/svn/public/shauny
        AuthName "Test repository"
</Location>
于 2011-02-11T17:18:12.017 回答
0

是的,有可能。

查看 SVNParentPath。这可能就是你所寻求的。不知道它与您的虚拟主机设置的效果如何,您可能必须移动目录(如果它们不共享父目录),但这可能是朝着正确方向迈出的一步。

当您需要不同的基于位置的设置时,唯一的问题就会出现,例如您是否使用不同的身份验证名称对每个存储库进行身份验证。在这种情况下,最好保持配置不变。

至于通过 PHP 接口包装 SVN 模块以随意添加 PHP 代码。虽然它应该在理论上有效,但我会在实践中避免它。通过在提交、读取等操作中添加前/后挂钩,可以在每个存储库的基础上完成任何类型的 SVN 日志记录。通过添加 Apache 指令可以更好地处理全局“每个 repo”日志记录。

于 2011-02-11T17:17:17.577 回答