2013-07-26 3 views
1

SVN을 사용하는 다중 개발자 환경에서 일하는 경우 개발자가 실수로 파일을 복사/붙여 넣기로 바꾸는 문제가 발생하는 경우가 있습니다. 파일. 이것은 때때로 diff가 subclipse의 동기화보기에서 커밋 전에 작동하기 때문에 눈에 띄지 않게됩니다.Subclipse 또는 (apache)로 커밋하는 동안 사용자가 '바꾸기'하지 못하도록 함 SVN

이것은 SVN에서 '파일 대체'(수정 대신)로 끝납니다. 이 대체 파일을 사용하면 SVN이 수정 된 파일 대신 새 파일이라고 생각하므로 파일의 기록을보다 쉽게 ​​볼 수 있습니다.

저는 개발자가 대체를 커밋 할 수 없도록하고 싶습니다. 또는 적어도 그들이 실제로 그 일을하려고한다는 것을 그들이 매우 잘 인식하게하십시오.

나는 무엇이 가능한지에 따라 여러 개의 레이어로 내 질문을 분할 할 수 있습니다 :

  1. 는이 허용되는 그 안에 '교체'와 커밋 방지 할 수있는 방법이있을 것입니다 특별한 액세스하지 않고, (서버 측면에서 아파치 SVN)?
  2. 거기에 '바꾸기'가있는 커밋을 방지하는 방법이 있습니까? (subclipse 내부)
  3. (경우 1과 2는 불가능합니다) 개발자가 자신의 커밋에서 '바꾸기'를 수행 할 것임을 알리는 방법이 있습니까? (내부 subclipse)

많은 감사.

답변

0

업데이트 된 버전의 Subclipse를 사용하고 있습니까? 대부분의 이유는 Eclipse와 Team API를 구동하는 방식 때문입니다. 일부 상황에서는 복사하여 붙여 넣기하면 팀 API가 파일을 삭제했다는 사실을 알게되어 Subclipse가 svn delete를 실행하게됩니다. 새 파일은 svn add이며, 이는 Replace에 해당합니다.

최신 버전의 Subclipse는 이러한 상황을 감지하고 약간의 단계를 거쳐 수정으로 되돌립니다. Subclipse의 현재 버전은 1.10.1이고, 그 버전 또는 가장 최근의 1.8.x 버전은이 변경 사항을 포함해야합니다.

  1. 커밋의 변경 사항을보고 커밋이 거부 된 커밋을 거부하려면 서버에 커밋 전 후크를 작성할 수 있습니다. Subversion이 제공하는 svnperms.py 예제 훅 스크립트를 살펴보십시오. 아직이 작업을 수행하지 않으면 작업 수행 방법이 표시됩니다.

  2. 더 이상 일어나지 않지만 더 새로운 Subclipse 버전은 덜 일반적 일 수 있습니다.

  3. 데코레이터는 다르게 보일 수 있으며 SVN 속성은 상태가 바뀌 었음을 나타내지 만 사용자가 이러한 것을 보지 않게합니다. # 2가 더 나은 옵션입니다.