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기반 구성 을 포기하는 것 입니다. repo 당 Apache 구성은 특히 mod_macro 와 같은 것을 사용하여 최소화 됩니다 . 어려운 부분은 전역 authz 파일을 분리합니다. 이전에이 작업을 수행 한 경우 팁을 주시면 감사하겠습니다.


같은 문제가 있으며 mod_macro를 사용하여 해결했습니다. 감사!!! (Apache 또는 Subversion에서 오래된 버그 인 것 같습니다.)
Achimnol

답변:


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 rock
vinnyjames
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.