문제

나는 이것을 어디로도 받고있는 것 같다. 스크립트 등을 검색하는 등. 이 요구 사항은 SVN 서버의 클라이언트로 추진되는 반면 전 세계적으로 팀의 모든 구성원이 필요합니까?

나는 스크립팅 언어를 모른다. 그리고 이것은 다음 3 시간 동안 스크립팅을 알아내는 데 시간을 할애하지 않고는 꽤 간단해야한다.

도움이 되었습니까?

해결책

주석이 필요한 .bat 파일입니다. 주석에 적어도 하나의 문자가 있는지 확인합니다.

 @echo off  
 :: Stops commits that have empty log messages.        
 @echo off  

 setlocal  

 rem Subversion sends through the path to the repository and transaction id  
 set REPOS=%1  
 set TXN=%2           

 svnlook log %REPOS% -t %TXN% | findstr . > nul  
 if %errorlevel% gtr 0 (goto err) else exit 0  

 :err  
 echo. 1>&2  
 echo Your commit has been blocked because you didn't enter a comment. 1>&2  
 echo Write a log message describing the changes made and try again. 1>&2
 echo Thanks 1>&2
 exit 1

이 파일은 Repository의 /hooks 폴더 (pre-commit.bat)에 있습니다. 최소의 문자가 필요한 경우 수정해야 할 라인은

svnlook log %REPOS% -t %TXN% | findstr . > nul

따라서 최소 10자를 원한다면 하나가 아닌 10자가 있어야합니다.

svnlook log %REPOS% -t %TXN% | findstr .......... > nul

Findstr의 고급 옵션 명령은 더 멋진 점검을 할 수 있습니다 (특정 문자 세트, ect)

다른 팁

나는 사용한다 SubversionNotify, 아마도 당신이 필요로하는 것보다 더 많은 일을하지만 설정하기가 매우 간단합니다.

이 시도 :

rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]  
IF %ERRORLEVEL% EQU 0 GOTO OK  
echo Your commit has been blocked because you didn't provide a log message 1>&2  
echo Please write a log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK  
rem -------------------------------------------------------------  
rem Check if comment is in list of reserved words to not be used..  
rem -------------------------------------------------------------  

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment  
setlocal enabledelayedexpansion  
Set SEPARATOR=  
set COMMENT=  
for /f "delims=" %%a in (comment) do (      
    set currentline=%%a  
    set COMMENT=!COMMENT!%SEPARATOR%!currentline!  
)  

FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null  
If %ERRORLEVEL% EQU 1 goto OK2  

:Fail  
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2  
echo Line is -%COMMENT%- 1>&2  
echo Please write a proper log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  


:OK2  
rem -------------------------------------------------------------  
rem Check number of words on the line if = 2 then reject comment  
rem -------------------------------------------------------------  
Set VAR1=%COMMENT%  
Set count=0  
For %%j in (%VAR1%) Do Set /A count+=1  
IF %count% EQU 2 goto Fail2  
goto OK3  

:Fail2  
echo Your commit has been blocked because not enough detail supplied 1>&2  
echo Please write a longer log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK3  
rem -------------------------------------------------------------  
rem Check that the author of this commit has the rights to perform  
rem -------------------------------------------------------------  
rem the commit on the files and directories being modified.  
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1  

rem All checks passed, so allow the commit.  
exit 0  

나는있다 사전 커밋 후크 그것은 당신이 원하는 것을 정확하게 할 수 있습니다. 게다가 훨씬 더.

  • 최소 커밋 주석 길이를 지정할 수 있습니다.
  • 당신은 commit 댓글을 a에 대해 일치시킬 수 있습니다 정규 표현. 길이를 지정할뿐만 아니라 특정 매개 변수를 지정할 수도 있습니다. 예를 들어, 커밋 주석에 결함 추적 시스템이 사용하는 버그 번호가 포함되어 있으므로 특정 결함으로 변경을 추적 할 수 있습니까?

또한 다음을 수행 할 수 있습니다.

  • 특정 파일 또는 디렉토리에 대한 다양한 커밋 권한을 설정하십시오.
    • 읽기 쓰기: 사용자는 이러한 항목을 확인하고 커밋 할 수 있습니다.
    • 읽기 전용: 사용자는이 항목을 확인할 수 있지만 변경 사항을 커밋 할 수는 없습니다.
    • 추가 전용: 사용자는 디렉토리를 통해 디렉토리를 추가 할 수 있습니다 svn cp, 그러나 변경 사항을 저 지르지 마십시오. 이것은 완벽합니다 /tags 태그를 만들 수 있지만 태그를 수정할 수없는 디렉토리.
    • 지수 없음: 사용자는 변경 사항을 커밋하고 새 파일을 추가 할 수 있지만 이러한 파일을 삭제하지는 않습니다.
    • 무대: 사용자는 변경 사항 만 커밋하고 커밋에서 파일을 추가하거나 삭제할 수 없습니다.

또한이 작업을 수행 할 수 있습니다.

  • 정규 표현식을 통해 특정 파일 이름을 금지합니다 글로브,
  • 특정 파일 또는 디렉토리에는 특정 속성이 특정 값으로 설정되어 있어야합니다. UNIX 쉘 스크립트, UNIX MakeFiles 및 Windows 배치 파일을 확인하는 데 매우 유용한 경우에 매우 유용합니다. svn:ignore 사용자가 실수로 커밋하지 말아야 할 파일에 커밋하지 않도록 설정되어 있습니다.
  • 특정 값으로 특정 수정 속성을 설정해야합니다. 이것이 커밋 메시지를 확인하는 방법이지만 svn:log 특정 정규 표현식과 일치해야합니다.

이 사전 커밋 스크립트는 Perl로 작성되었습니다. 기본적으로 Perl에는 Unix, Mac 및 Linux 서버가 제공됩니다. 불행히도 Windows 컴퓨터에는 포함되지 않습니다. 다행히도 몇 가지 오픈 소스가 있으며 무료이며 PC 용 Perl 패키지를 쉽게 설치하기 쉽습니다. ActivePerl 그리고 딸기 perl

Windows에서는 사용할 수 있습니다 VisualSVNServerHooks.exe check-logmessage VisualSVN 서버와 함께 제공되는 사전 커밋 후크 %VISUALSVN_SERVER%bin 예배 규칙서. 이 간단한 도구는 로그 메시지에서 허용 된 문자 수를 정의하는 데 도움이됩니다.

기사를 참조하십시오 KB140 : VisualSVN 서버에서 커밋 로그 메시지를 확인합니다 지침.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top