2012-02-10 2 views
5

다른 원격 저장소의 미러 인 Subversion 저장소가 있습니다. 저는 매주 저장소를 미러링하기 위해 svnsync를 사용합니다. 미러 된 저장소 (로컬 사본)는 백업용으로 만 존재합니다.Subversion - 모든 커밋을 비활성화하고 저장소를 읽기 전용으로 설정할 수 있습니까?

미러 리포지토리를 읽기 전용으로 유지하고 싶습니다. 즉, 아무도이 리포지토리의 변경 내용을 커밋 할 수는 없지만 원격 리포지토리보다 빠르기 때문에 소스 파일을 읽을 때 사용할 수 있습니다.

Google에서 둘러 보았는데, 아마도 후크가 가장 좋은 옵션 인 것 같습니다. 유일한 문제는 Google에서보고있는 모든 예제가 Unix 기반이며 미러 된 저장소가 Windows Server에서 실행 중일 때 Windows에 대한 적절한 예를 찾을 수 없다는 것입니다.

아이디어가 있으십니까?

답변

5

왜 non-access = read 및 auth-access = svnserve.conf에서 읽는 것이 좋을까요?

+0

방금 ​​시도했지만 커밋을 허용합니다 .- /myrepository/conf/svnserve.conf 파일에서 두 속성의 주석 처리를 제거했습니다. – ziggy

+0

비공개 액세스의 기본값이 읽혀 지므로 주석 처리가 잘되어 있지만 기본값 auth-access는 쓰기이므로 읽기 위해 명시 적으로 설정해야합니다. – mac

+0

예 그냥 읽기 위해 auth-access를 변경해 보았지만 여전히 커밋 할 수 있습니다. Collabnet Subversion edge를 사용하고 있습니다. GUI를 통해 액세스를 제한 할 수있는 옵션이 있지만 수동으로 svnserve를 변경한다고 추측해도됩니다. – ziggy

6

먼저 체크 아웃 URL에 http:// 또는 svn://을 사용하고 있습니까?

svn://을 사용하는 경우 저장소에있는 svnserve.conf 파일에 공백으로 전달 된 파일 만 있으면 인증 된 액세스 권한을 삭제하도록 구성 할 수 있습니다. 익명 액세스는 기본적으로 '읽기 전용'이므로 svnserve.conf 파일에서 해당 설정을 변경하지 않은 경우에는 정상이어야합니다. 또는 익명 액세스를 해제하고 승인 된 액세스를 read-only으로 변경할 수 있습니다.

그러나 http://을 사용하는 경우 쓰기 액세스를 허용하지 않기 위해 Subversion 서버에서 Apache httpd 구성을 구성해야합니다.

아파치 httpd 인증을 설정하는 여러 가지 방법이 있고 시스템에 따라 아파치 httpd를 여러 위치에 저장할 수 있기 때문에 까다로워집니다.

또 다른 가능성은 pre-commit hook을 사용하여 저장소에 대한 모든 읽기 - 쓰기 액세스를 해제하는 것입니다.

덧붙여서, 구형 svnsync 커멘드는, 동기하고 있던 변경을 커밋하기 위해서 svn 읽기 - 기입 액세스를 요구할뿐만 아니라, 미리 revprop 변경 훅 세트를 가질 필요가 있기 때문에, svnsync 커멘드도 변경 가능합니다 svn:log, svn:datesvn:author 속성을 원래 저장소와 일치시킵니다. 다시 말하면, 저장소 을 읽기 전용으로 만들면 svnsync이 깨질 수 있습니다. svnsync의 작동 방식과 이것이 여전히 적합한 지 여부를 읽어야합니다. 내 사전 커밋 후크도 그 문제를 해결할 수 있습니다.