Subversionの「SVNParentPath」とリポジトリごとの構成が混在していますか?


9

SVNParentPathを使用した典型的なSubversion / Apache構成があり、リポジトリが次の/svn/ようにホストされているとします。

<Location /svn>
    DAV svn

    SVNParentPath /srv/source/svn/repos
    SVNReposName "Subversion Repository"

    AuthzSVNAccessFile /srv/source/svn/authz
    Satisfy Any

    AuthType                Basic
    AuthBasicProvider       file
    AuthName "Subversion Repository"
    AuthUserFile /srv/source/svn/htpasswd

    Require valid-user
</Location>

別のパスでそれらをホストする必要なしに、特定のリポジトリーに対してこの構成をオーバーライドする方法はありますか?つまり、Locationこのようなブロックを追加する方法はありますか...

<Location /svn/my_special_repo>
    SVNPath /srv/source/svn/repos/my_special_repo
    AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>

...そして、ブロックで提供された構成をオーバーライドします か?上記の構成でこれを実行しようとした私の試みは、Apacheエラーログで次のような奇妙で役に立たないエラーに遭遇しました。Location/svn

[Wed Feb 02 11:28:35 2011] [error] [client 10.10.209.120]
(20014)Internal error: Can't open file '/srv/source/svn/repos/svn/format':
No such file or directory

これはすべて、mod_dav_svnが私がやろうとしていることを実行できないことを伝える方法のようです。私は解決策や代替案を受け入れています!

編集:まあ、私はこの質問が読者の間で多くの興奮を引き起こしたことがわかります。記録のために、私がやろうとしていることは、既存のすべてのリポジトリーのリポジトリーごとの構成を生成してから、SVNParentPathベースの構成を放棄することです。リポジトリごとのApache構成は最小限であり、特にmod_macroなどを使用します。難しい部分は、グローバルauthzファイルを分割することです。以前にこれを行ったことがある場合は、ヒントをいただければ幸いです。


同じ問題があり、mod_macroを使用して解決しました。ありがとう!!! (ApacheまたはSubversionの古いバグのようです。)
Achimnol 2011年

回答:


4

自分の質問が未回答の質問のリストで困惑しているのを見たくないので、次のようにします。

  • メインサーバー構成では、次のようになっています。

      <Location /svn/>
            SVNParentPath /srv/source/svn/repos
      </Location>
    
  • mod_macro新しいリポジトリでこの動作を再現するために、以下を採用しました。

    <Macro LegacySubversionRepo $name>
        # Override SVNParentPath block in main vhost config.
        RewriteRule ^/svn/$name /repo/$name [PT]
    
        <Location /repo/$name>
                Order                   deny,allow
                Allow                   from all
    
                Use LdapAuth \
                        "$name svn repository" \
                        /srv/source/svn/htpasswd
    
                DAV svn
                SVNPath /srv/source/svn/repos/$name
                AuthzSVNAccessFile /srv/source/svn/authz
                SVNAutoversioning On
                Satisfy Any
        </Location>
    </Macro>
    

    を使用RewriteRuleすると、<Location /svn/>そうでない場合はリクエストと一致するメイン構成のリポジトリ構成をオーバーライドできます。

これにより、リポジトリごとの認証と承認の構成を(htpasswdここで使用するグローバルファイルの代わりに)比較的簡単に採用できます。


mod_macro rocks
vinnyjames 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.