【问题标题】:Possible to route to multiple subversion repositories without the need of individual virtual hosts?可以在不需要单个虚拟主机的情况下路由到多个颠覆存储库吗?
【发布时间】:2011-02-12 01:18:12
【问题描述】:

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

基本上这是我当前的 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 处理它们会更可行,因为我可以根据使用情况等生成一些日志......

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

【问题讨论】:

    标签: php svn mod-rewrite apache2 mod-dav-svn


    【解决方案1】:

    我们在开发盒上进行了这种设置(诚然只有 3 个存储库),我们只是将 Location 指令设置为指向颠覆根目录并使用 SVNParentPath:

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

    【讨论】:

    • SVNParentPath 是否也需要是一个存储库,或者只是包含子文件夹中每个单独存储库的普通文件夹?
    • 太棒了,工作。非常感谢您的提示。期待大量的黑客攻击来实现这一目标,结果就这么简单:)
    【解决方案2】:

    是的,有可能。

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

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

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

    【讨论】:

    • 感谢您提供此信息,我将研究前/后挂钩。肯定需要为我正在制作的在线 svn 管理工具记录或添加事件:)
    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 2018-05-03
    • 2016-08-22
    • 1970-01-01
    • 2021-07-14
    • 2023-04-06
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多