2010-05-21 8 views
5

저는 RCS로 Subversion을 사용하고 있습니다. 언제나 새 버전의 프로젝트가 완료되면 해당 프로젝트의 태그 (트렁크 사본)를 만듭니다. 아무도 내가 실수로이 태그가 지정된 디렉터리를 보호 할 수있는 방법을 알고 있습니까?Subversion : 태그가 지정된 디렉토리에 대한 쓰기 방지

임시 해결책으로 모든 파일을 잠급니다. 하지만이 창은 잠금 장치가있는 사용자가 파일을 편집 할 수 있음을 의미합니다.

더 좋은 해결책이 있습니까?

답변

5

미리 커밋 된 후크를 사용하여 사용자가 tags 디렉토리에 작성하지 못하게 할 수 있습니다.
SVN pre-commit hook for avoiding changes to tags subdirectories

+0

사전 커밋 (Pre-Commit) 후크는 특정 사용자가 태그 디렉토리를 변경할 수 있도록하는 등 더 복잡한 작업을 수행 할 수있는 스크립트입니다. –

+0

pre-commit hook이 공식적인 방법이라면 SVN 속성 "svn : needs-lock"을 모든 파일에 설정합니다. – Alexander

+1

모든 파일에 속성을 설정하지 마십시오 ... 이것은 SVN의 개념에 위배됩니다. 경로 기반 인증에 대한 대답은 올바른 방법입니다. – khmarbaise

2

당신은 path-based authorization를 사용하여 태그 디렉토리에 대한 읽기 전용 권한이 부여 할 수 있습니다 :

예제이 SO 관련 질문을 참조하십시오.

+0

이 솔루션의 문제점은 새'태그 '를 만들 수 없다는 것입니다. 특정 사용자에게 쓰기 권한이 부여되면 태그 내의 파일을 실수로 수정할 가능성이 있습니다. –

+0

/myproject/tags/my-first-tag는 태그 생성 후 읽기 전용으로 설정되지만, 일반/tags 하위 디렉토리는 쓰기 가능 상태로 남겨두면 태그를 읽기 전용으로 설정할 수 있습니다 : es :/myproject/tags는 쓰기 가능합니다. –

0

태그의 모든 파일에 svn:needs-lock 속성을 설정하면 사용자가 명시 적으로 잠금을 획득하지 않는 한 모든 파일이 읽기 전용으로 체크 아웃됩니다. 이것은 (대부분의 경우) 파일이 변경되는 것을 방지합니다. 누군가가 읽기 전용 플래그를 변경하거나 잠금을 획득하는 것을 막지는 않지만 우발적 인 수정 가능성을 줄입니다.

Subversion 자체는 svn:needs-lock 속성을 폴더에 적용 할 수 없지만 TortoiseSVN 클라이언트 (예 : Windows)에서는이 속성을 폴더 및 하위 폴더의 모든 파일에 적용합니다 (예 :). TortioseSVN repo-browser에서이 작업을 수행 할 수 없으므로 태그의 작업 복사본을 체크 아웃하고 속성을 수정 한 다음 속성 변경 사항을 체크인해야합니다. 다른 고객은 다를 수 있습니다. 기본 Subversion 명령 줄 클라이언트를 사용하는 경우 속성을 대량으로 적용하기 위해 파일 및 하위 폴더를 반복하는 데 적합한 쉘 스크립트 또는 유사 항목이 필요할 수 있습니다. Tags 폴더의 내용을 변경하려고 시도하면 TortoiseSVN이 경고합니다. 단, 이는 시행이 아니라 관행 일뿐입니다.

svn:needs-lock 해결 방법은 다소 약하고 쉽게 피할 수 있으며 새 파일 이 추가 된 태그 폴더에이 추가되지 않습니다. 더 강력한 대안은 더미 사용자를 생성하고 해당 사용자 이름의 전체 태그에 대한 잠금을 획득하는 것입니다. 이렇게하면 "실제"사용자가 체크인 할 수 없으며 작업 복사본 체크 아웃의 경우 읽기 전용 속성이 svn:needs-lock과 같이 설정됩니다. 차이점은 잠금을 획득 할 수 없으며 작업 복사본의 읽기 전용 속성은 체크인을 허용하지 않습니다.

+0

나는 그 질문이 오래되었다는 것을 알고 있지만, 나는 이것에 대한 해결책을 찾고 있었고이 질문을 발견했다. 이 답변은 현재 직접적인 지원이없는 것처럼 보이기 위해 현재 의도하고있는 것을 설명합니다. – Clifford

관련 문제