2014-01-07 3 views
0

Git에서 gitolite처럼 SVN 저장소를 원격 관리 할 수 ​​있도록 svn 후크 세트를 작성하고 있습니다.저장소 당 AuthzSVNAccessFile 아파치 설정 파일이나 다른 쉘 스크립트 솔루션을 하나만 사용하는

필자는 각 저장소에 대해 AuthzSVNAccessFile을 생성하는 스크립트를 만들었으므로 이제 Apache에게 저장소에 따라 각각을 찾도록 지시해야합니다.

아파치 서버를 다시 시작해야하기 때문에 각 저장소마다 아파치 설정 파일을 가질 수 없습니다.

하나의 AuthzSVNAccessFile을 사용하여 여러 저장소를 관리 할 수 ​​있지만 파일을 작성하는 스크립트에는 시간이 걸리고 (저장소 내의 모든 디렉토리의 전체 경로를 찾아야 함) 커밋을 너무 오래 걸릴 수 있습니다.

mod_rewrite를 사용하려고했지만 작동하지 않았을 수 있습니다. 잘못 사용한 것 같습니다.

기본적으로 요청한 URL에 따라 다른 파일을 읽는 규칙이 내 아파치 구성 파일에 있어야합니다. 방법?

또는 파일 블록을 다시 쓸 수있는 스크립트가 필요합니다. sed을 사용하여 템플릿에있는 문자열을 대체하지만 여러 줄을 바꾸는 방법을 모릅니다. 시간

답변

4

당신은 내가 전적으로 귀하의 질문에 오해가있어하지 않는 mod_rewrite를 사용하려고 시도하는 이유 없음 아이디어

감사합니다. 그러나 SVNParentPath를 사용하고있는 것처럼 들리며 모든 저장소에 대해 authz 설정을 구성하는 방법을 알아내는 데 문제가 있습니다.

몇 가지 옵션이 있습니다. 당신은 실제로 하나에는 AuthZ 파일을 생성하고 규칙 리포지터리를 지정할 수 있습니다

하나 개를 사용에는 AuthZ 파일에 적용됩니다. 구문은 Path-Based Authorization section of the Subversion Book에서 찾을 수 있듯이 [repos-name:path] 형식입니다. 이 단점 중 하나는 많은 저장소와 규칙이있는 많은 경로가 있으면 작업 속도가 느려질 수 있다는 것입니다. 네가 뛰는 것처럼 들린다. 이 일부를 완화 할 수있는 한 가지 예를 들어, 로그 (다음과 같은 구성을 URI가 아닌 다른 경로에 대한 요청은 다른 경로 요청의 URI보다 액세스 할 필요가있을 때 권한을 부여하는 방법

SVNPathAuthz short_circuit 

SVNPathAuthz 컨트롤을 사용하고, 커밋 , 등). 기본 동작은 하위 요청을 실행하는 것입니다. 이는 httpd에서 새로운 GET 요청을 생성하고이를 httpd의 모든 권한 부여 인프라를 통해 보냅니다. 그러나 SVN을 제공하는 데 사용되는 Location 아래의 경로에 따라 달라질 수있는 유일한 권한 구성은 mod_authz_svn 구성이므로 거의 모든 경우에 필요하지 않습니다. short_circuit는 Subversion에게이 모든 것을 피하도록 지시하고 단순히 지연을 직접적으로 제한하는 대답을 제공하는 mod_authz_svn에게 인증 정보를 전송합니다.

아직 충분하지 않을 수 있으므로 몇 가지 대안이 있지만 사용하려면 1.7 이상이 필요합니다.

AuthzSVNReposRelativeAccessFile 당신이 저장소의 conf의 하위 디렉토리에 상대적인 경로를 지정 할 수 있습니다

Subversion 1.7 added a new configuration directive.

AuthzSVNReposRelativeAccessFile authz 

이 지침 1.7 이전 AuthzSVNAccessFile를 사용 : 예를 들어 당신은 foo는라는 이름의 repo는 당신이/경로 /로/foo는/conf의 /에는 AuthZ을에는 AuthZ 파일을 넣고 다음 구성 값을 설정할 수있는 경우 서버 루트 경로를 기준으로합니다. 저장소에는 AuthZ에서

*

Subversion 1.8 allows you to store the authz file in the repository itself. 이 파일에는 AuthZ로라는 디렉토리의 conf에서의 repo에서 파일을 저지른 경우, 예를 들면, 그래서 당신은 할 줄 :

AuthzSVNAccessFile ^/authz 

^를/구문은 저장소의 전체 경로로 대체됩니다.

사용하기로 결정한 경우 1.8의 링크 된 릴리스 노트에 대한 자세한 내용을 읽는 것이 좋습니다.

+0

감사합니다. 'SVNPathAuthz'plus'AuthzSVNReposRelativeAccessFile'이 내가 필요한 것입니다. –