2012-04-27 1 views
1

내 SVN 저장소의 사용자가 특정 파일의 변경 사항을 확인하지 못하도록하고 싶습니다. 나는 다음의 pre-commit hook 스크립트를 사용하여 이것을 수행했다. 그러나 제한된 파일의 수가 증가하고 있으며 변경 사항을 적용하는 속도가 매우 느립니다. 더 효율적인 코딩 방법이 있는지 궁금 해서요, 나는 변화 목록을 가지고 놀았지만 그 일을 할 수는 없습니다. 사전에특정 저장소 파일을 변경하는 사용자를 차단하는 SVN 사전 커밋 (pre-commit) 스크립트

감사

사전 커밋 후크 스크립트 (윈도우 기반의 SVN 저장소) : 다른 SVN 저장소에 "참조 터빈"밖으로

setlocal 
:: Inputs from Subversion 
set REPOS=%1% 
set TXN=%2% 

:: Checks if one of the reference files 
Rem Check if the commit contains reference files 
svnlook changed %REPOS% -t %TXN% | findstr /r /i "^.*referenceparts/part1.txt" > nul 
if %errorlevel%==0 (goto RefPart) 
svnlook changed %REPOS% -t %TXN% | findstr /r /i "^.*referenceparts/part2.txt" > nul 
if %errorlevel%==0 (goto RefPart) 
...... 
..... 
etc etc 

exit 0 

:: Blocks the commit if part are reference 
: RefPart 
echo. 1>&2 
echo ---------------------------------------------------------------------- 1>&2 
echo Your commit has been cancelled because you are trying to change a  1>&2 
echo part for a reference turbine! Please make a copy of this part and  1>&2 
echo save it under a different name.          1>&2 
echo ---------------------------------------------------------------------- 1>&2 
echo. 1>&2 
exit 1 
+0

아마도 다른 방법으로 파일을 잠그는 것이 좋겠지 만,'svnlook changed % REPOS % -t % TXN %'만하면 도움이 될 수도 있습니다. (나 또는 findstr이 병목인지는 모르겠습니다.) – crashmstr

답변

0

Windows cmd 스크립트가 아니라 perl을 사용하도록 다시 작성했습니다. Perl은 훨씬 더 나은 정규 표현식 지원을 제공하므로 스크립트를 사용하여 모든 참조 파일을 조사하는 대신 디렉토리와 패턴을 대신 필터링 할 수 있습니다.

딸기 페일은 실행하기 쉽습니다. 다운로드하고 경로상의 디렉토리에 exe와 perl dll을 넣고 작업을 완료하십시오.

당신도 또한 Windows 스크립트에서 findstr을 사용하여 빠른 파일 확장명 목록을 필터링하는 데 익숙합니다. 나는 svnlook의 결과를 파일 (파일 이름에 revnum을 추가하고 나중에 삭제하는 것을 잊지 말것)로 변경하고/G 옵션과 함께 findstr 명령에 입력으로 사용했다고 썼습니다. 먼저 해봐.

3

휴식을 라이브러리로 구축하고 그것을 도서관으로 배포하십시오. 그런 다음 필요한 사람에게만 "참조 터빈"라이브러리에 대한 액세스 권한을 부여하십시오.

변경할 권한이없는 사람이 수백 번 빌드해야하는 수정 불가능한 소스 코드를 체크 아웃하는 것은 전기와 시간 낭비 일뿐입니다.

디버깅 세션 중에 참조 터빈 소스를 단계별로 실행해야하는 경우 디버깅 기호 및 해당 소스 코드가있는 라이브러리와 디버깅 기호가없는 라이브러리 두 버전을 배포 할 수 있습니다. 대부분의 IDE에는 "소스 코드"패키지를로드하여 디버깅 세션에 수반되는 사람이 읽을 수있는 텍스트를 제공한다는 개념이 있습니다.